繁体   English   中英

需要有关SQL Distinct的帮助

[英]Need help for the 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   --+
+-----------------------+

知道如何区分表格吗?

“ DISTINCT”适用于结果集中的每一列。

“ GROUP BY”将提供您所需的结果,但是您需要考虑“ col2”在结果集中是否具有实际含义。

 SELECT col1, min(col2) as col2
      FROM T
     GROUP BY col1
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)

col2中没有相同的值,而col1中没有相同的值,因此如果您同时选择两列,则DISTINCT可能不会生成结果。

如果您使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM