我需要从一个表中选择3列,但我需要任何列中的每个值在该列的结果集中都是唯一的。
此查询:
SELECT DISTINCT TOP 10 a, b, c
FROM x将返回10 distinct集。
我该怎么做呢?
发布于 2009-06-03 10:49:19
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-03 10:39:38
this question没有给你想要的东西吗?
发布于 2009-06-03 10:41:22
我不知道这是否可能在一次拍摄中完成。我会通过创建一个表变量来做到这一点。
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 @Resultshttps://stackoverflow.com/questions/944061
复制相似问题