MySQL:排除子查询中收集的同一个表中的项目

时间:2012-09-22 05:16:34

标签: mysql

我在这里想要完成的事情似乎并不太难,而且在执行中我没有看到任何我做错的事情,但是我得到的结果应该从结果集中否定。

我正在手机上写这封信,所以请原谅我手写这些东西:

该表称为“请求”,在程序中,人们可以注册接受请求。客户端的特定请求是向已经接受请求的用户隐藏。

这是捕获22: 请求基于来自另一个表的特定实体,并且可以为每个基本实体发布多个请求。基本上从系统中删除所述实体的重复项,我认为处理这种情况的一种不错的方法是将一个新的关联行称为请求,该请求包含唯一的id,请求者的帐户ID,实体的实体id请求基于该特定可用请求行的接受者的帐户ID字段。

正如你所看到的,它的解释开始变得有些混乱,但请记住,这是一个相当晚的变化,在这个阶段无法改变系统。

所以这是我最记得的查询:

选择   * 从   要求 哪里   完成= 0 AND   entity_id!= ANY(SELECT GROUP_CONCAT(entity_id)WHERE accepted_account_id ='8')

8是我在系统中的帐户ID,系统中有8个基本实体(全部来自同一个帐户,7个),其中2个实体具有基于它们的请求,第一个有4个请求,并且第二个有16个请求。请求表中有20个请求行。 作为用户,我已经在系统中的两个实体上接受了单个请求。所以在请求表中的两行, RequestID为1,实体ID为1,Acceptor帐户ID为8 和 请求ID为5,实体ID为3,接受者帐户ID为8

而所有其他行包含acceptor_account_id的空字段

我试图简单地从结果集中否定整个entity_ids,以免弄乱同一查询中的分页(我对分离查询不感兴趣,我150%肯定这可以全部可以在一个查询中完成)

如果有人有任何问题,请告诉我,因为这很紧急:(

1 个答案:

答案 0 :(得分:1)

SELECT * FROM requests WHERE completed = 0 AND entity_id NOT IN (SELECT entity_id WHERE accepted_account_id = '8' GROUP BY entity_id)