MySQL如何获得具有标签1和标签2的记录

时间:2015-08-06 23:16:27

标签: mysql sql

我有桌子:

ID      Name    label
1       Jan     1
2       Jan     2
3       Adam    2
4       Adam    10
5       Kasia   1

我想仅使用标签1和标签2

获取记录

例如:

1       Jan     

我有很多标签,所以在subselect的subselect中进行subselect选择......这是个坏主意

2 个答案:

答案 0 :(得分:1)

您可以通过各种方式执行此操作。我首选的方法是group byhaving

select min(id), name
from table
group by name
having sum(case when label = 1 then 1 else 0 end) > 0 and
       sum(case when label = 2 then 1 else 0 end) > 0 ;

对于每个名称,这将计算出现“1”并出现“2”的次数。 > 0确保每个至少出现一次。

答案 1 :(得分:1)

另一种方法是使用intersect运算符。

 select id, name
 from tablename where label = 1 
 intersect
 select id, name
 from tablename where label = 2