在我的mySQL数据库中,在表audience
下面有一个名为unique_hash
的列,其中包含每个访问者的唯一标识符。
在表behaviour
中,有一列unique_hash
和page
。与unique_hash
表相反,audience
可以有很多行。但是,unique_hash
上的behaviour
来自已将其保存到audience
表中的访问者。
不幸的是,由于某些维护原因,我丢失了部分数据,结果是表unique_hash
中behaviour
的明显数量超过了unique hash
audience
这应该是平等的时间。
什么是mysql查询将删除behaviour
表中unique_hash
表上找不到audience
的所有行?
答案 0 :(得分:2)
您可以使用NOT IN
,如下所示:
DELETE FROM behaviour
WHERE NOT unique_hash IN (
SELECT DISTINCT unique_hash FROM audience
)
第二种解决方案是使用NOT EXISTS
:
DELETE FROM behaviour
WHERE NOT EXISTS (
SELECT * FROM audience
WHERE audience.unique_hash = behaviour.unique_hash
)