首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从与一个条件匹配的表中删除,因为同一表中存在与不同条件匹配的行?

问是否从与一个条件匹配的表中删除,因为同一表中存在与不同条件匹配的行?
EN

Stack Overflow用户
提问于 2012-10-11 03:10:23
回答 1查看 1.2K关注 0票数 2

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

代码语言:javascript
复制
id (row id)
date
company_name
attendees

在某些情况下,对于给定的日期,有两个条目匹配company_name和date,但一个条目具有attendees=0,另一个条目具有attendees>0。在这些情况下,我想丢弃attendees=0。

我知道您不能在删除时连接同一个表,因此请将此查询视为伪代码,它显示了我想要完成的任务。

代码语言:javascript
复制
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);

我还尝试用要删除的行的IN填充一个临时表,但该查询由于IN (SELECT ...)挂起子句。我的表有数千行,所以这只会耗尽CPU,然后超时。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-11 03:24:37

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

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12826606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档