需要有关SQL Distinct的帮助

时间:2012-05-16 04:16:48

标签: sql distinct

原始表

+-- 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   --+
+-----------------------+

知道如何区分表吗?

4 个答案:

答案 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