gpt4 book ai didi

mysql - 从匹配一个条件的表中删除,其中同一个表中有行匹配不同的条件?

转载 作者:行者123 更新时间:2023-11-29 02:31:17 24 4
gpt4 key购买 nike

抱歉,标题太大了……我试图描述得足够清楚。我有一个包含事件出席数据的表,其中有一些错误数据。表定义有点像这样:

id (row id)
date
company_name
attendees

在某些情况下,对于给定的日期,有两个条目与 company_name 和 date 匹配,但一个的 attendees=0 而另一个的 attendees>0。在那些情况下,我想丢弃 attendees=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 用尽,然后超时。

最佳答案

这个丑陋的东西应该可以工作(使用别名允许避免 You can't specify target table for update in FROM clause 错误)

DELETE FROM attendance
WHERE (attendees, date, company_name)
IN (SELECT c.a, c.d, c.c
FROM
(SELECT MIN(attendees) a, date d, company_name c
FROM attendance
GROUP BY date, company_name
HAVING COUNT(*) > 1) as c);

SqlFiddle

关于mysql - 从匹配一个条件的表中删除,其中同一个表中有行匹配不同的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com