从另一个具有不同值的列中获取值

时间:2014-08-29 16:13:22

标签: sql sql-server

我试图找到具有相同数字但价值不同的行,我到达了这个查询:

DECLARE @Table1 AS TABLE (Number INT, Value int )
INSERT @Table1 VALUES (32, 3)
INSERT @Table1 VALUES (32, 5)
INSERT @Table1 VALUES (45, 5)
INSERT @Table1 VALUES (45, 5)

SELECT DISTINCT Number, COUNT(Value)
FROM @Table1 GROUP BY Number, Value
HAVING COUNT(Value) < 2

这是最好的方法吗?

3 个答案:

答案 0 :(得分:1)

您的查询是否会返回预期结果?我通常看到它写得像这样:

SELECT Number, COUNT(DISTINCT Value)
FROM @Table1 GROUP BY Number
HAVING COUNT(DISTINCT Value) < 2

或者,根据您在下面的评论,您可以这样做:

SELECT Number
FROM @Table1 a
WHERE EXISTS(SELECT * FROM @Table1 b WHERE a.Number=b.Number and a.Value<>b.Value)

答案 1 :(得分:0)

SELECT Number, COUNT(distinct Value) as value
FROM @Table1 GROUP BY Number

答案 2 :(得分:0)

您可以使用加入。

对于加入:

  SELECT t1.Number, t1.Value
  FROM @Table1 t1
  JOIN @Table1 t2
  ON t2.Number = t1.Number 
    AND t2.Value <> t1.Value

这应该让你顺利。如果您希望有更多可呈现的最终结果集,可以将其用作子查询。