[英]SQL select row where (this column has many different values in the other)
我想选择某些精确列的值不同而另一精确列的值相同的行。
范例:
COLUMN_A | COLUMN_B
__________|___________
|
1 | 2002
1 | 2002
2 | 2001
2 | 2007
3 | 2010
3 | 2010
现在,假设我想知道哪些行具有相同的A但不同的B,查询将返回这些行
2 | 2001
2 | 2007
要不就
2
只要我知道是哪一个...
您可以使用:
SELECT COLUMN_A
FROM dbo.YourTable
GROUP BY COLUMN_A
HAVING MIN(COLUMN_B) <> MAX(COLUMN_B);
另一种方法可以使用EXISTS
:
SELECT *
FROM dbo.YourTable A
WHERE EXISTS(SELECT 1 FROM dbo.YourTable
WHERE COLUMN_A = A.COLUMN_A
AND COLUMN_B <> A.COLUMN_B);
Count( Distinct ColumnName )就是这种情况。 它确保仅考虑唯一值。
With Src As (
Select *
From (Values
(1, 2002),
(1, 2002),
(2, 2001),
(2, 2007),
(3, 2010),
(3, 2010)
) V (COLUMN_A, COLUMN_B)
)
Select *
From Src
Where COLUMN_A In (
Select COLUMN_A
From Src
Group By COLUMN_A
Having Count(Distinct COLUMN_B) > 1 --<- "More than one unique value" condition
)
COLUMN_A COLUMN_B
2 2001
2 2007
这是没有分组的:
SELECT x.column_a, x.column_b, y.column_b
FROM table_name x
JOIN table_name y
ON ( x.column_a = y.column_a AND x.column_b <> y.column_b )
您只需将表加入自身,并提供所需的条件即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.