MySQL:选择*包含1但缺少2的列

时间:2016-01-11 13:21:42

标签: mysql

我有一张MySQL表。
在表格中我有“serie”和“number” 它看起来像这样:

id    serie    number
-------------------------------
0       1           1
1       1           2
2       1           3
3       2           1
4       2           2
5       2           3
6       3           1
7       3           3

Maby你注意到“serie”3,没有数字2 现在我想做一个查询,我搜索系列包含,让我们说数字1,但不是数字2 我可以这样做吗?

我是这样开始的:

SELECT serie FROM table as ser1 WHERE number = "1";
SELECT serie FROM table WHERE number = ser1.number AND number != "2";

2 个答案:

答案 0 :(得分:1)

您可以使用not exists这样做:

SELECT serie 
FROM table as ser1 
WHERE number = "1" and not exists 
(select 1 from table where serie = ser1.serie and number = "2");

答案 1 :(得分:1)

您可以使用合适的HAVING子句进行分组:

SELECT serie    
FROM mytable
GROUP BY serie
HAVING COUNT(CASE WHEN number = 1 THEN 1 END) > 0 AND 
       COUNT(CASE WHEN number = 2 THEN 1 END) = 0