我有数据分组(column_2),我只想选择每个组(相同column_2值)另一列(column_3)的所有值都相等的行。还有更多没有不同值的列(例如 column_1),但我们不关心它们的值。
例如,对于此表:
| column_1 | column_2 | column_3 |
----------------------------------
|'irrelevant'| 1 | 5 |
|'irrelevant'| 1 | 5 |
|'irrelevant'| 1 | 5 |
|'irrelevant'| 2 | 3 |
|'irrelevant'| 2 | 5 |
|'irrelevant'| 2 | 5 |
|'irrelevant'| 3 | 7 |
|'irrelevant'| 3 | 7 |
|'irrelevant'| 4 | 8 |
|'irrelevant'| 4 | 9 |
|'irrelevant'| 4 | 2 |
|'irrelevant'| 5 | 6 |
|'irrelevant'| 6 | 2 |
|'irrelevant'| 7 | 1 |
|'irrelevant'| 7 | 1 |
|'irrelevant'| 7 | 1 |
我会得到:
| column_1 | column_2 | column_3 |
----------------------------------
|'irrelevant'| 1 | 5 |
|'irrelevant'| 1 | 5 |
|'irrelevant'| 1 | 5 |
|'irrelevant'| 3 | 7 |
|'irrelevant'| 3 | 7 |
|'irrelevant'| 5 | 6 |
|'irrelevant'| 6 | 2 |
|'irrelevant'| 7 | 1 |
|'irrelevant'| 7 | 1 |
|'irrelevant'| 7 | 1 |
这些行被跳过,对于相同的 column_2 值,column_3 在它们之间是不相同的。
您可以使用COUNT(DISTINCT <expr>)
来找出每组有多少不同的值。
例如:
select *
from t
where column_2 in (
select column_2
from t
group by column_2
having count(distinct column_3) = 1
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句