0
我试图创建工作或功能与此相同的Select语句UPDATE语句:如何select语句转换为一个更新语句
SELECT *
FROM table
WHERE field1 = 1
AND field2 NOT IN (SELECT field2
FROM table
WHERE field1 = 0)
我试图创建工作或功能与此相同的Select语句UPDATE语句:如何select语句转换为一个更新语句
SELECT *
FROM table
WHERE field1 = 1
AND field2 NOT IN (SELECT field2
FROM table
WHERE field1 = 0)
从select
到update
翻译是非常在这种情况下很简单,因为它不需要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
将可能有一个更好的计划,虽然。
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)
我会尝试使用除了。 http://stackoverflow.com/questions/12462560/update-with-except-statement – KHeaney 2014-09-03 21:16:01