原始表
+-- Col 1 --+-- Col 2 --+
+-- 1 --+-- a --+
+-- 1 --+-- b --+
+-- 1 --+-- c --+
+-- 2 --+-- d --+
+-- 3 --+-- e --+
+-- 3 --+-- f --+
+-----------------------+
结果:
+-- Col 1 --+-- Col 2 --+
+-- 1 --+-- a --+
+-- 2 --+-- d --+
+-- 3 --+-- e --+
+-----------------------+
知道如何区分表吗?
答案 0 :(得分:1)
“DISTINCT”适用于结果集中的每一列。
“GROUP BY”将提供您需要的结果,但您需要考虑“col2”在结果集中是否具有任何实际意义。
SELECT col1, min(col2) as col2
FROM T
GROUP BY col1
答案 1 :(得分:0)
SELECT t.Col1, t.Col2
FROM T t
WHERE NOT EXISTS(SELECT *
FROM T s
WHERE t.Col1 = s.Col1 AND t.Col2 > s.Col1)
答案 2 :(得分:0)
对于col1中的相同值,col2中没有相同的值,因此如果要同时选择两列,则DISTINCT无法生成结果。
答案 3 :(得分:0)
如果使用SQL Server,表名为TEST,则可以在T-SQL中使用CROSS APPLY,如下所示:
SELECT DISTINCT Col1, TEST2.Col2 FROM TEST
CROSS APPLY (SELECT TOP 1 Col2 FROM TEST TEST2
WHERE TEST2.Col1 = TEST.Col1) TEST2