mysql - DISTINCT 作为子句或函数

标签 mysql sql

我正在用 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/

相关文章:

mysql - 使用单列mysql进行全文搜索

mysql - 具有聚合字段和分组依据的临时变量在 mysql 中不起作用

MySql 多个 where 条件 - 只匹配第一个正确的条件

SQL Server 2008 使用另一个表中的值更新表

php - 从多个复选框形成查询字符串

mysql - 在一行显示一、二、三等奖

java - 如何从mySQL中获取特定字段的数据到java中的JLabel中?

mysql - 在处理竞争条件时选择和更新一行?

java - 我正在尝试使用 JDBC 从 Oracle 表中提取 XMLTYPE 列,但遇到一些问题

c# - 一个关于SQL插入语句的问题!