从与其他列分组的MySql表列中获取唯一值

时间:2014-11-11 12:31:49

标签: mysql self-join

对于MySql专家来说,这可能是一个非常基本的查询实践,但我无法得到我期待的结果。

下面是MySql查询和输出窗格。 我想要实现的是获取所有cell_id的记录中不存在的bug_ids。换句话说,查看下面的记录,我们可以看到bug_ids 1,2,3,4存在于所有cell_ids 32,33,34中。我想要除了这些bug_ids之外的记录。所以预期的输出就是这样的,

project_id cell_id bug_id test_set_id case_id  
106        32      16     1           5  
106        33      16     1           5  
106        34       7     1           5  

我也尝试过使用自联接,但找不到合适的查询。

Query with the output

如果您需要更多信息,请与我们联系。任何帮助将不胜感激。谢谢你们。

1 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作获取不在所有单元格中的错误列表:

select bug_id
from tran_cell_bug tcb
where cell_id in (32, 33, 34)
group by bug_id
having count(distinct cell_id) <> 3;

然后,您可以使用join获取原始值:

select tcb.*
from tran_cell_bug tcb join
     (select bug_id
      from tran_cell_bug tcb
      where cell_id in (32, 33, 34)
      group by bug_id
      having count(distinct cell_id) <> 3
     ) b
     on tcb.bug_id = b.bug_id;