繁体   English   中英

SQL选择行,其中(此列中的其他值很多)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM