I am having some trouble with a SQL delete. SQL Server doesn't like have multiple parameters in the where clause to delete rows from table_02
(subquery is table 1). Any help on this would greatly be appreciated.
我在SQL删除中遇到了一些麻烦。SQL Server不喜欢在where子句中有多个参数来从table_02中删除行(子查询是表1)。
thanks.
谢谢。
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
)
2 个解决方案
#1
5
You can rewrite IN
as an 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)
#2
1
Delete a
from table1 a
Inner Join table2 b
on a.col = b.col
WHERE ...
#1
5
You can rewrite IN
as an 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)
#2
1
Delete a
from table1 a
Inner Join table2 b
on a.col = b.col
WHERE ...