【问题标题】:SQL-Server 2014. UPDATE joining two tables and using table aliasesSQL-Server 2014. UPDATE 连接两个表并使用表别名
【发布时间】:2015-09-11 08:59:53
【问题描述】:

我有两张几乎一模一样的桌子。 当它是NULL 时,需要更新 TABLE_03 中的每个Postal 没有要使用的 ID 或主键,所以我将它们与列 LinkNamePhoneNum /(TABLE_ALL 中的 Phone)链接起来

尝试过的SQL:

 UPDATE TABLE_03 a
   join TABLE_ALL b 
   ON   a.Link = b.Link,
        a.Name = b.Name,
        a.PhoneNum = b.Phone
   SET a.Postal = b.PostalCode
  WHERE a.Postal IS NULL;

SQL Server 报错

Incorrect syntax near 'a'.

没有别名:

  UPDATE TABLE_03 
   join TABLE_ALL 
   ON   TABLE_03.Link = TABLE_ALL.Link,
        TABLE_03.Name = TABLE_ALL.Name,
        TABLE_03.PhoneNum = TABLE_ALL.Phone
   SET TABLE_03.Postal = TABLE_ALL.PostalCode
  WHERE TABLE_03.Postal IS NULL; 

给出错误:

Incorrect syntax near the keyword 'join'.

【问题讨论】:

标签: sql-server join sql-update alias


【解决方案1】:

您的语法错误,主要是JOIN ON 子句。它应该像下面使用AND 运算符

UPDATE TABLE_03 a
   join TABLE_ALL b 
   ON   a.Link = b.Link AND
        a.Name = b.Name AND
        a.PhoneNum = b.Phone
   SET a.Postal = b.PostalCode
  WHERE a.Postal IS NULL;

使用正确的SQL Server 语法

UPDATE a
SET a.Postal = b.PostalCode
FROM TABLE_03 a
   join TABLE_ALL b 
   ON   a.Link = b.Link AND
        a.Name = b.Name AND
        a.PhoneNum = b.Phone   
  WHERE a.Postal IS NULL;

【讨论】:

    【解决方案2】:

    试试这个

           UPDATE TABLE_03 
     SET TABLE_03.Postal = TABLE_ALL.PostalCode
     from TABLE_ALL 
     where  TABLE_03.Link = TABLE_ALL.Link AND 
        TABLE_03.Name = TABLE_ALL.NAME AND 
        TABLE_03.PhoneNum = TABLE_ALL.Phone and
    
       TABLE_03.Postal IS NULL; 
    

    【讨论】:

      【解决方案3】:

      试试这个:

       UPDATE a
         SET a.Postal = b.PostalCode
         FROM TABLE_03 a
         join TABLE_ALL b 
         ON   a.Link = b.Link,
              a.Name = b.Name,
              a.PhoneNum = b.Phone
        WHERE a.Postal IS NULL;
      

      【讨论】:

        猜你喜欢
        • 2017-02-09
        • 2023-02-23
        • 2022-11-21
        • 1970-01-01
        • 2013-12-10
        • 2017-07-05
        • 1970-01-01
        • 2011-06-26
        相关资源
        最近更新 更多