很抱歉这个大标题......我试图描述得足够好。我有一个包含活动出席数据的表,其中包含一些错误数据。表定义是这样的:
id (row id)
date
company_name
attendees
最终在某些情况下,对于给定的日期,有两个条目与 company_name 和 date 匹配,但一个的参加者=0,另一个参加者>0。在这些情况下,我想丢弃参加者 = 0 的那些。
我知道您在删除时不能加入同一张表,因此请将此查询视为显示我想要完成的伪代码。
DELETE FROM attendance a WHERE a.attendees=0 AND a.date IN (SELECT b.date FROM attendance b WHERE b.attendees > 0 AND b.company_name = a.company_name);
我还尝试使用要删除的行的 ID 填充临时表,但是由于 IN (SELECT ...) 子句,该查询挂起。我的表有数千行,所以只会最大化 CPU 然后超时。