Sql 从没有单个ID的表中删除

Sql 从没有单个ID的表中删除,sql,key,sql-delete,Sql,Key,Sql Delete,最近,我在SQL中遇到了一个查询问题。问题如下: 我有两张桌子,叫做“旧”和“新”。两者的结构相同,列“key1”、“key2”和“description”。此外,表“new”包含“old”和其他条目的子集 现在我想从“旧”表中删除“新”表中未出现的所有条目。问题在于,“键1”和“键2”都不是唯一的,只是两者的组合 示例入口: 旧的: 新的: 我尝试了下面的sql语句,但没有成功(至少在Access97中是这样) 删除 从古至今 其中old.key1new.key1和old.key2 new.

最近,我在SQL中遇到了一个查询问题。问题如下: 我有两张桌子,叫做“旧”和“新”。两者的结构相同,列“key1”、“key2”和“description”。此外,表“new”包含“old”和其他条目的子集

现在我想从“旧”表中删除“新”表中未出现的所有条目。问题在于,“键1”和“键2”都不是唯一的,只是两者的组合


示例入口:

旧的:

新的:

我尝试了下面的sql语句,但没有成功(至少在Access97中是这样)

删除
从古至今
其中old.key1new.key1和old.key2 new.key2
有人知道如何删除旧版本中的所有条目吗?在key1和key2组合唯一的约束下,这些条目不会出现在“new”中

DELETE FROM old 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   new 
                   WHERE  old.key1 = new.key1 
                          AND old.key2 = new.key2) 
您还可以检查描述是否匹配

DELETE FROM old 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   new 
                   WHERE  old.key1 = new.key1 
                          AND old.key2 = new.key2 
                          AND old.description = new.description) 
您还可以检查描述是否匹配

DELETE FROM old 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   new 
                   WHERE  old.key1 = new.key1 
                          AND old.key2 = new.key2 
                          AND old.description = new.description) 

请不要使用
&
。这不是C或Java,而是SQL。请不要使用
&
。这不是C或Java,而是SQL。
DELETE FROM old 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   new 
                   WHERE  old.key1 = new.key1 
                          AND old.key2 = new.key2) 
DELETE FROM old 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   new 
                   WHERE  old.key1 = new.key1 
                          AND old.key2 = new.key2 
                          AND old.description = new.description) 
DELETE *
FROM old
WHERE old.key1 & " " & old.key2 IN (select new.key1 & " " & new.key2 from new )