SQL Server-帮助使用子查询删除具有多个where子句的行
我在SQL删除方面遇到了一些问题。SQL Server不喜欢在where子句中使用多个参数来从表\u 02中删除行。子查询是表1。在此方面的任何帮助都将不胜感激 谢谢SQL Server-帮助使用子查询删除具有多个where子句的行,sql,sql-server,Sql,Sql Server,我在SQL删除方面遇到了一些问题。SQL Server不喜欢在where子句中使用多个参数来从表\u 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
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
)
您可以将中的重写为存在
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)
Delete a
from table1 a
Inner Join table2 b
on a.col = b.col
WHERE ...