是否有更优雅的方式来编写以下Microsoft SQL Server 2008命令?
UPDATE TableB
SET TableBField2=0
WHERE TableBID IN(
SELECT TableBID
FROM TableB
JOIN TableA on TableB.TableAID=TableA.TableAID
WHERE TableBField2 < 0
AND TableAField1 = 0
)
简单来说,我正在做的是根据连接表中字段的值更新表。我想知道我对IN()的使用是否被认为效率低下。
答案 0 :(得分:1)
这应该更有效:
UPDATE TableB b
SET TableBField2=0
WHERE exists (
SELECT 1
FROM TableA
WHERE b.TableAID=TableA.TableAID
AND b.TableBField2 < 0
AND TableAField1 = 0
)
答案 1 :(得分:1)
您可以尝试这样的事情
UPDATE TableB
SET Field2 = 0
FROM TableB b INNER JOIN
TableA a ON b.TableB.TableAID=a.TableAID
WHERE b.Field2 < 0
AND a.Field1 = 0