distinct 多列 的 用法理解
在使用mysql时候经常遇到需要使用 distinct语句的时候,首先我们知道对于单列检索,distinct 返回唯一值例如原始图表corporationnumberAlibaba1001Tencent1002Alibaba1003Netease1004使用SELECTD...
·
代码基于mysql
在使用 mysql 时候经常遇到需要使用 distinct 语句的时候,首先我们知道对于单列检索,distinct 返回唯一值
例如 原始图表
corporation number
Alibaba 1001
Tencent 1002
Alibaba 1003
Netease 1004
使用
SELECT DISTINCT corporation
FROM table
返回
corporation
Alibaba
Tencent
Netease
这个是没问题 的
但是当我们只想得到每个公司的一个number时候,我们使用
SELECT DISTINCT corporation,name
FROM table
返回数据是原始数据,这里也就是最容易引起疑惑的,
首先我们明确一点,DISTINCT 用在所有的检测列之前,并且 它是作用于 所有列,不能部分使用
也就是类似
SELECT id ,DISTINCT corporation
这种方式是错误的,那么 在使用 distinct 时候,我们可以把它后面的 所有参数当成一个 也就是 DISTINCT (id,corporation) ,即只有 (id,corporation )这个组合的数据都相同时候,才会被“去重”,否则 还是会保留。
最后我们回到 题目,如果每个公司我只想得到一个代表就行 ,可以使用 group by 语句
SELECT corporation ,MAX(number),
FROM table
GROUP BY corporation
这样对同一家公司,会保留number 最大的一行,返回
corporation number
Tencent 1002
Alibaba 1003
Netease 1004
这样就达到目的,所以,当DISTINCT无法满足只对单字段去重,并希望结果中显示对应的多字段内容的时候,可以用group by函数实现。但要注意希望在结果中显示的非去重目标字段,需要对它们分别添加筛选条件的函数或方法,否则sql语句会报错
更多推荐
已为社区贡献1条内容
所有评论(0)