答案 0 :(得分:8)
如果您知道结果中的两列总是直接相关,那么执行此操作的速度会慢一些:
SELECT DISTINCT CustomerId, CustomerName FROM (...)
比这个:
SELECT CustomerId, CustomerName FROM (...) GROUP BY CustomerId
因为在第二种情况下它只需要比较id,但在第一种情况下它必须比较两个字段。这是MySQL特有的技巧。它不适用于其他数据库。
答案 1 :(得分:1)
SELECT Code
FROM YourTable
GROUP BY Code
VS
SELECT DISTINCT Code
FROM YourTable
答案 2 :(得分:0)
基本规则:将SELECT子句中的所有列放入GROUP BY子句
所以
SELECT DISTINCT a,b,c FROM D
变为
SELECT a,b,c FROM D GROUP BY a,b,c
答案 3 :(得分:-2)
实施例
关系客户(ssnum,名称,邮政编码,地址)PK(ssnum)。 ssnum是社会安全号码。
SQL:
Select DISTINCT ssnum from customer where zipcode=1234 group by name
此SQL语句为具有邮政编码1234的客户返回唯一记录。最后,结果按名称分组。
这里DISTINCT并非没有必要。因为你选择的ssnum是唯一的,因为ssnun是主键。两个人不能拥有相同的ssnum。
在这种情况下,Select ssnum from customer where zipcode=1234 group by name
将提供比“...... DISTINCT .......”更好的性能。
DISTINCT在DBMS中是一项昂贵的操作。