每列都有所不同

时间:2009-06-03 10:34:35

标签: sql-server sql-server-2005 distinct

我需要从表中选择3列,但我需要任何列中的每个值在此列的结果集中都是唯一的。

此查询:

SELECT DISTINCT TOP 10 a, b, c
FROM   x

将返回10个不同的集合。

我该怎么办?

3 个答案:

答案 0 :(得分:4)

WITH q AS
        (
        SELECT  a, b, с, ROW_NUMBER() OVER (ORDER BY a, b, c) AS rn
        FROM    mytable
        )
SELECT  TOP 10 a, b, c
FROM    q q1
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.a = q1.a
        )
        AND NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.b = q1.b
        )
        AND NOT EXISTS
        (
        SELECT  1
        FROM    q
        WHERE   q.rn < q1.rn
                AND q.c = q1.c
        )

答案 1 :(得分:1)

this question没有给你你想要的东西吗?

答案 2 :(得分:1)

我不知道这一次是否可行。我会通过创建一个表变量来做到这一点。

DECLARE @Results TABLE
(
  a varchar(100),
  b varchar(100),
  c varchar(100)
)
INSERT @Results(a)
SELECT DISTINCT a FROM myTable

INSERT @Results(b)
SELECT DISTINCT b FROM myTable

INSERT @Results(c)
SELECT DISTINCT c FROM myTable

SELECT a,b,c FROM @Results