我在删除SQL时遇到了一些麻烦。 SQL Server不喜欢在where子句中有多个参数来从table_02
中删除行(子查询是表1)。对此有任何帮助将非常感激。
感谢。
DELETE FROM table_02
WHERE (col_1,col_2,col_3,col_4)
IN (
SELECT col_1,col_2,col_3,col_4
FROM table_01
GROUP BY
col_1,col_2,col_3,col_4
HAVING SUM(CASE WHEN col_1<6 THEN col_2*-1 ELSE col_2 END)=0
)
答案 0 :(得分:5)
您可以将IN
重写为EXISTS
DELETE
FROM table_02
WHERE EXISTS(SELECT *
FROM table_01
WHERE table_02.col_1 = table_01.col_1
AND table_02.col_2 = table_01.col_2
AND table_02.col_3 = table_01.col_3
AND table_02.col_4 = table_01.col_4
HAVING SUM(CASE
WHEN col_1 < 6 THEN col_2 * -1
ELSE col_2
END) = 0)
答案 1 :(得分:1)
Delete a
from table1 a
Inner Join table2 b
on a.col = b.col
WHERE ...