我需要3
从表中选择列,但我需要任何列中的每个值在该列的结果集中都是唯一的。
这个查询:
SELECT DISTINCT TOP 10 a, b, c
FROM x
将返回10
不同的集合。
我该怎么做?
我需要3
从表中选择列,但我需要任何列中的每个值在该列的结果集中都是唯一的。
这个查询:
SELECT DISTINCT TOP 10 a, b, c
FROM x
将返回10
不同的集合。
我该怎么做?
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
)
这个问题没有给你你想要的吗?
我不知道这是否可能一次性完成。我会通过创建一个表变量来做到这一点。
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