我有两张桌子。主表是“CompleteEmailListJuly11”,第二个表是“CurrentCustomersEmailJuly11”。我想删除CurrentCustomersEmailJuly11基于电子邮件的CompleteEmailListJuly11表中的行。
我在删除示例后尝试了这个,但它没有做任何接近我正在尝试做的事情。这只显示了数据库中存在的那些,它没有显示不匹配的电子邮件列表。
DELETE * FROM CompleteEmailListJuly11 AS i
WHERE EXISTS (
SELECT 1 FROM CurrentCustomersEmailJuly11
WHERE CurrentCustomersEmailJuly11.email = i.EmailAddress
)
非常感谢帮助。
答案 0 :(得分:10)
这是我认为你需要的查询:
DELETE FROM CompleteEmailListJuly11
WHERE EmailAddress IN (SELECT email FROM CurrentCustomersEmailJuly11)
Ps:DELETE查询不会删除单个字段,只删除整行,因此*不是必需的,您还需要“执行”此查询而不是“预览”或“导出”
答案 1 :(得分:1)
如果您在Access'查询设计器中构建DELETE
查询,请注意有两种不同的操作模式,类似于“继续并执行此操作”。
如果你已经知道这一点,我的描述可能看起来很侮辱。抱歉。然而,似乎新的访问者很容易忽视它们之间的区别。
答案 2 :(得分:0)
您可以使用适合删除的内容
SELECT ... // complete
EXCEPT
SELECT ... // current
我不确定它是如何映射到删除的,但请看一下。
我喜欢这个问题:How do I 'subtract' sql tables?
答案 3 :(得分:0)
我们可以使用相关查询来解决像
这样的问题DELETE FROM COMPLETE C
WHERE EMAIL = (SELECT EMAIL FROM CURR CU WHERE CU.EMAIL=C.EMAIL);