一尘不染

SQL选择其中仅具有特定值的行

sql

我有这样的桌子

Col 1 Col 2 Col 3
1       A     1
2       A     2
3       B     1
4       C     1
5       C     2
6       D     1

如何只获得Col 3 = 1的 唯一 行?

我想获取第3行和第6行(分别为Col 2 = B和D)。我不想要A或C,因为它们也具有Col 3 = 2。

我已经尝试了以下方法:

select col 2 from table group by col 2 having count(col 3) = 1

但这只会带来第2列的结果,因此我不确定第3列的内容是否等于1。

编辑: 对不起,也许我还没有明确表达我的问题。我想获得第2列的所有行,这些行仅包含第3列= 1且 包含 1

因此,如果我尝试使用WHERE Col 3= 1,它将返回4行,因为A有1。但是由于A也有其中Col 3 =
2的行,所以我不希望这样做,与C相同。从此示例表中,我希望得到最终结果只显示2行,即B和D。

我的示例表就是一个示例,实际上我要过滤约5000行,否则我会按照你们的建议:)


阅读 163

收藏
2021-03-17

共1个答案

一尘不染

SELECT col2
FROM your_table
GROUP BY col2
HAVING MAX(col3) = 1 AND MIN(Col3) = 1

或者

SELECT a.col2 
FROM your_table a
WHERE a.col3=1 AND NOT EXISTS(SELECT *
                              FROM your_table b 
                              WHERE a.col2=b.col2 AND b.col3<>1)
2021-03-17