我遇到了一些SQL请求的麻烦。
我有2个数据库,具有相同的表(结构,不是内容)
我想删除database1中的所有行,因为它们的两个字段与database2中的字段不对应。
例如: d1.table.field1!= d2.table.field1和d1.table.field2!= d2.table.field2 - >删除此行 否则,不要。
现在,这是我的实际(不工作)代码:
DELETE
FROM table
WHERE table.field1 NOT IN (SELECT table.field1 FROM table@database2)
AND table.field2 NOT IN (SELECT table.field2 FROM table@database2)
答案 0 :(得分:0)
我认为问题在于您从不同的行匹配field1
和field2
。如果想法是两个字段必须来自同一行,这应该有效:
DELETE FROM table
WHERE NOT EXISTS (
SELECT *
FROM table@database2 tt
WHERE tt.field1=table.field1 AND tt.field2=table.field2
)
SELECT
中NOT EXISTS
的条件可确保field1, field2
对必须属于database2
表中的同一行。