我需要从表中选择3
列,但我需要任何列中的每个值在此列的结果集中都是唯一的。
此查询:
SELECT DISTINCT TOP 10 a, b, c
FROM x
将返回10
个不同的集合。
我该怎么办?
答案 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