2014-09-03 91 views
0

我试图创建工作或功能与此相同的Select语句UPDATE语句:如何select语句转换为一个更新语句

SELECT * 
FROM table 
WHERE field1 = 1 
AND field2 NOT IN (SELECT field2 
        FROM table 
        WHERE field1 = 0) 
+0

我会尝试使用除了。 http://stackoverflow.com/questions/12462560/update-with-except-statement – KHeaney 2014-09-03 21:16:01

回答

0

selectupdate翻译是非常在这种情况下很简单,因为它不需要SQL Server的非标准专有更新语法。

UPDATE table 
SET field3 = 'X' 
WHERE field1 = 1 
     AND field2 NOT IN (SELECT field2 
          FROM table 
          WHERE field1 = 0) 

翻译它的另一种方法是将整个select语句放在cte中并更新它。

WITH t 
    AS (SELECT * 
     FROM table 
     WHERE field1 = 1 
       AND field2 NOT IN (SELECT field2 
            FROM table 
            WHERE field1 = 0)) 
UPDATE t 
SET field3 = 'Y' 

如果所涉及的任何列是可空not exists将可能有一个更好的计划,虽然。

0
UPDATE [Table1] 
SET [Column1] = ? 
    ,[Column2] = ? 
    --,... other columns and so on.... 
WHERE field1 = 1 
    AND NOT EXISTS (SELECT 1 
        FROM Table2 
        WHERE field1 = 0 
        AND Field2 = [Table1].Field2)