在SQL中使用更新语句时,子查询没有给出所需的结果?

时间:2015-08-19 17:31:16

标签: sql-server

我试图更新专栏'验证'在[sdw]。[WS_INV_CONTACT]中使用以下查询

BEGIN TRAN

UPDATE [sdw].[WS_INV_CONTACT]
SET    validate = ( CASE
                      WHEN EXISTS (SELECT A.address_zip_code
                                   FROM   [sdw].[WS_INV_CONTACT] AS A
                                          LEFT JOIN [dbo].[ZipCode] AS B
                                                 ON A.address_zip_code = B.Zip
                                   WHERE  A.address_zip_code = SUBSTRING(address_zip_code, 1, 5)
                                          AND B.zip IS NULL) THEN 'N'
                      ELSE 'Y'
                    END ); 

上面更新语句中使用的子查询产生了6行,我想用' N'更新验证列。仅适用于那六行,但查询正在更新表中的所有行。

任何人都可以向我建议我做错的地方或任何更好的解决方案。

非常感谢

2 个答案:

答案 0 :(得分:1)

看起来你需要类似下面的内容

<div contentEditable="true">
    <span>Editable span</span> but
    <span contentEditable="false">This one is not</span>
</textarea>

答案 1 :(得分:0)

试试这个

UPDATE a 
SET    validate = ( CASE 
                      WHEN NOT EXISTS (SELECT a.address_zip_code 
                                       FROM   [dbo].[zipcode] AS b 
                                       WHERE  a.address_zip_code = b.zip 
                                              AND a.address_zip_code = 
                                                  Substring(address_zip_code, 1 , 5)) THEN 'N' 
                      ELSE 'Y' 
                    END ) 
FROM   [sdw].[ws_inv_contact] a