【问题标题】:SQL query for update wrong entered values更新错误输入值的 SQL 查询
【发布时间】:2017-10-26 14:12:33
【问题描述】:

我正在尝试使用城镇列更新邮政编码列,因为城镇列中的某些条目输入错误(用户输入邮政编码而不是城镇名称),所以我编写了一个查询以使用邮政编码值更新邮政编码列输入城镇栏:

UPDATE      dbo.ClientLocations
SET         Postcode = cl.Town
FROM        ClientLocations cl INNER JOIN Clients AS c 
            ON cl.ClientId = c.Id
WHERE   (cl.Town IS NOT NULL) AND 
        (cl.Town <> '') AND 
        (cl.Archived IS NULL OR cl.Archived = 0) AND 
        (cl.Postcode IS NULL) AND 
        (c.IsArchived IS NULL OR c.IsArchived = 0)  AND
        (cl.Town <> 'Norwich' AND  cl.Town <> 'Ireland') and 
        cl.ClientId not in (27858,45444)

【问题讨论】:

  • 有什么问题?

标签: sql sql-server tsql sql-server-2012


【解决方案1】:

我猜您发现代码不起作用,因为所有行都在更新。需要使用update中的表别名:

UPDATE cl
    SET Postcode = cl.Town
    FROM ClientLocations cl INNER JOIN
         Clients AS c ON cl.ClientId = c.Id
    WHERE  (cl.Town IS NOT NULL) AND (cl.Town <> '') AND (cl.Archived IS NULL OR
           cl.Archived = 0) AND (cl.Postcode IS NULL) AND (c.IsArchived IS NULL OR
               c.IsArchived = 0)  AND  (cl.Town <> 'Norwich' AND  cl.Town <> 'Ireland') and cl.ClientId not in (27858, 45444);

您可能还有其他问题,但您不妨让update 做您想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多