我有这样的桌子
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。
Col 3= 1
我的示例表就是一个示例,实际上我要过滤约5000行,否则我会按照你们的建议:)
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)