1

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

这个查询:

SELECT DISTINCT TOP 10 a, b, c
FROM   x

将返回10不同的集合。

我该怎么做?

4

3 回答 3

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
        )
于 2009-06-03T10:49:18.587 回答
1

这个问题没有给你你想要的吗?

于 2009-06-03T10:39:38.230 回答
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
于 2009-06-03T10:41:22.003 回答