大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
一、distinct 位置
1. 单独的distinct只能放在开头,否则报错,语法错误
mysql>SELECT nickname,DISTINCT(openid) from ims_ewei_shop_member;
[SQL] SELECT nickname,DISTINCT(openid) from ims_ewei_shop_member;
[Err] 1064 – You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near ‘DISTINCT(openid)
from ims_ewei_shop_member’ at line 1
2. 现在把distinct放在开头
SELECT DISTINCT(openid),nickname from ims_ewei_shop_member;
# 查询成功
3. 与其他函数使用时候,没有位置限制如下
SELECT nickname,count(DISTINCT(openid)) from ims_ewei_shop_member;
# 这种情况下是正确的,可以使用。
二、distinct用法
1. 在count计算不重复的记录的时候能用到
SELECT COUNT(DISTINCT(openid)) from ims_ewei_shop_member;
# 就是计算ims_ewei_shop_member表中openid不同的记录有多少条
2. 在需要返回记录不同的如openid等具体值的时候可以用
SELECT DISTINCT(openid) from ims_ewei_shop_member;
# 返回ims_ewei_shop_member表中不同的openid的具体的值
3. 上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
# 无论是
SELECT DISTINCT(openid),nickname from ims_ewei_shop_member;
# 还是
SELECT DISTINCT openid,nickname from ims_ewei_shop_member;
# 特别注意:
# 实际上返回的是openid与nickname 同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得openid和nickname都相同的才被排除了,与我们期望的结果不一样,我们期望的是openid不同被过滤
# 在这种情况下,distinct同时作用了两个字段,openid,nickname
# 这时候可以考虑使用group_concat() 函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
# 同时我们还可以利用下面的方式解决以上遇到的歧义问题通过group by分组
用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187261.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...