【发布时间】:2016-02-18 15:02:27
【问题描述】:
我想选择一些精确列具有不同值而另一个精确列具有相同值的行。
示例:
COLUMN_A | COLUMN_B
__________|___________
|
1 | 2002
1 | 2002
2 | 2001
2 | 2007
3 | 2010
3 | 2010
现在,假设我想知道哪些行具有相同的 A 但不同的 B,查询将返回行
2 | 2001
2 | 2007
或者只是
2
只要我知道是哪一个...
【问题讨论】:
-
GROUP BY、COUNT DISTINCT 等
-
我会使用自联接或 Exists 查询。
group by having distinct count可能是性能最差的 -
@JamieD77 可能,但是如果 COLUMN_B 中有两个以上不同的值怎么办?
Count Distinct可以很好地处理它,而Join需要Distinct自己的。具有多个不同值的Join变成笛卡尔积。 -
@Y.B.我会亲自使用 EXISTS ......我没有在自我加入上考虑太多:)
标签: sql sql-server