SQL Server:如何查找列具有不同值的ID

时间:2015-03-19 14:11:44

标签: sql sql-server

我有一张这样的表:

Column1 Column2
---------------
1       1
1       2
1       3
1       4
2       1
2       1
2       1
2       1

column1一个中有2个不同的ID,在column2中,column1的每个ID都有不同的值。

如何从column1获取来自column2的所有ID都不相同的ID?所以在这种情况下输出应该是1 - 因为它们在column2中具有所有不同的值,其中column1中的id在column2中具有所有1'

4 个答案:

答案 0 :(得分:2)

只需使用group byhaving

select column1
from table t
group by column1
having min(column2) <> max(column2);

注意:您也可以使用count(distinct),但这比min()max()有更多的开销。

如果第二列可能是NULL,则可以使用类似的逻辑。这并没有出现在样本数据中,因此除非OP明确表示这是可能的,否则它似乎不值得将其包括在逻辑中。

答案 1 :(得分:1)

试试这样:

select Column1
from yourTable 
group by Column1
having count(DISTINCT column2) > 1;

答案 2 :(得分:0)

我认为这样的事情应该可以胜任:

SELECT t.column1 FROM table t
GROUP BY t.column1
HAVING COUNT(DISTINCT t.column2) > 1

答案 3 :(得分:0)

此方法将处理null为column2中可接受值的情况。

select column1
from
(
select distinct column1, column2
from yourTable
) t
group by column1
having count(*) > 1