基于非唯一列的mysql distinct查询

时间:2012-11-02 21:12:52

标签: mysql

我有一个奇怪的(可能是糟糕的表格设计)查询问题,我想不出一个简单的解决方法。

这是一个像我一样的表格布局:

| id                 | int(11)     | NO   | PRI | NULL    | auto_increment | 
| num                | varchar(15) | YES  | MUL | NULL    |                | 
| type               | varchar(4)  | YES  |     | NULL    |                | 

类型实际上是枚举(“val1”,“val2”,“blah”)

num表中可以有3个条目,每个条目有3个不同的类型。

我需要的查询是具有“val1”和“val2”条目的不同数量的“num”的计数。

我认为没有一个简单的查询来处理这个...但我唯一能解决的解决方案是将val1的不同条目转储到内存表,将val2的不同条目转储到内存表。

然后确定哪个表的记录数最少。然后根据较小的表编写子查询,在较大的表中查找数字匹配。

以上听起来像是一个糟糕的黑客...

我在这里遗漏了什么...你们中有谁看到了更好的方法吗?

1 个答案:

答案 0 :(得分:3)

select count(*)
from `MyTable`
where `type` in ('val1', 'val2')
group by `num`
having count(distinct `type`) = 2