我正在用 DISTINCT
关键字做一些实验,一些特殊情况引起了我的注意。
首先我注意到我可以在 DISTINCT
中加上一些括号,例如:
SELECT DISTINCT(NAME) FROM EMPLOYEE;
没问题,而
SELECT DISTINCT(NAME, SURNAME) FROM EMPLOYEE;
给我一个错误。为什么?
允许这样的操作有什么意义?
SELECT DISTINCT(NAME), COUNT(SURNAME) FROM EMPLOYEE;
最佳答案
DISTINCT
(或 DISTINCTROW
)不是函数;它是 SELECT
的一个选项告诉 MySQL 从查询生成的结果集中去除重复行的语句。默认情况下,它返回所有生成的行,包括重复项。
也可以和COUNT()
一起使用聚合函数(如 COUNT(DISTINCT expr)
),它具有相同的含义:它忽略重复项。
因为 DISTINCT
不是函数,DISTINCT(NAME)
被解释为 DISTINCT
后跟表达式 (NAME)
(与 NAME
相同)。
SELECT DISTINCT(NAME, SURNAME) FROM EMPLOYEE
不起作用,因为 (NAME, SURNAME)
不是有效的 MySQL 表达式。
关于mysql - DISTINCT 作为子句或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909808/