我有以下查询:
delete from Copies
where (id,MovieID) IN (
select distinct id,MovieID
from copies
where type = 'dubbed' AND (id,MovieID) NOT IN (select id,MovieID from Bookings))
我基本上试图在我的一张表中删除所有“配音”副本,这些副本从未被预订/保留。当我执行查询时,会通知:
在预期条件的上下文中指定的非布尔类型的表达式,靠近','。
我知道这个查询在PostgreSQL中运行正常,但我在SQL Server 2012上执行它时遇到了问题。我该怎么办?
答案 0 :(得分:1)
此版本应在SQL Server中运行。
delete
c
from
copies c
where
type = 'dubbed' and
not exists (
select
'x'
from
Bookings b
Where
c.id = b.id and
c.movieId = b.MovieId
)
答案 1 :(得分:1)
这就是你应该在 Postgres 中开始的方式:
DELETE FROM copies
WHERE type = 'dubbed'
AND NOT EXISTS (
SELECT 1 -- it's irrelevant what goes here
FROM bookings b
WHERE b.id = copies.id
AND b.movieid = copies.movieid
);
同样适用于SQL-Server(至少2008年或更晚)。