Mysql 不同的(c1),c2和不同的c1,c2之间有什么不同

Mysql 不同的(c1),c2和不同的c1,c2之间有什么不同,mysql,Mysql,正如标题所述,DISTINCT(c1)、c2和DISTINCT c1、c2之间有什么区别 DISTINCT(c1)像函数吗?我没有发现任何手册提到DISTINCT可以是一个函数 样本输出: mysql>创建表t1(c1int,c2int); 查询正常,0行受影响(0.26秒) mysql>插入t1值(1,1)、(1,2)、(2,4)、(2,2)、(2,4); 查询正常,5行受影响(0.01秒) 记录:5个重复:0警告:0 mysql>从t1中选择c1、c2; +------+------+ |c

正如标题所述,
DISTINCT(c1)、c2
DISTINCT c1、c2
之间有什么区别

DISTINCT(c1)
像函数吗?我没有发现任何手册提到
DISTINCT
可以是一个函数

样本输出:

mysql>创建表t1(c1int,c2int);
查询正常,0行受影响(0.26秒)
mysql>插入t1值(1,1)、(1,2)、(2,4)、(2,2)、(2,4);
查询正常,5行受影响(0.01秒)
记录:5个重复:0警告:0
mysql>从t1中选择c1、c2;
+------+------+
|c1 | c2|
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
|    2 |    4 |
+------+------+
一组5行(0.00秒)
mysql>从t1中选择distinct(c1)、c2;
+------+------+
|c1 | c2|
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
+------+------+
一组4行(0.00秒)
mysql>从t1中选择不同的c1、c2;
+------+------+
|c1 | c2|
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    4 |
|    2 |    2 |
+------+------+
一组4行(0.00秒)

Hmmm。区别在于
select distinct(c1),c2
select
子句中有额外的、不需要的括号

DISTINCT
不是SQL中的函数或运算符。它是一种
SELECT
语句,适用于
SELECT
中的所有列。括号没有相关性


您可以将其与
UNION-ALL
中的
ALL
相同的方式来考虑。不,distinct不是一个函数!它只是一种选择,类似于GROUPBY子句所做的事情

Distinct将始终应用于select中指定的整行/所有列,因此是否添加括号并不重要

最好不要使用括号,因为这样会更难阅读和理解,并且可能会误导到您在这里提出的同一个问题—它是否只适用于该列。

可能重复的