Toggle navigation
Zxy 博客
Zxy 博客
balderdash
share
打赏
留言
关于我
Let's Party !
登录
mysql中select distinct的用法
作者:
siwesley
|
时间:June 27, 2018 |
分类:
share
|
评论:
0 评论
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。 其原因是distinct只能返回它的目标字段,而无法返回其它字段,经过实验,有如下方法可以实现。 举例如下: 这是test表的结构 id test1 test2 1 a 1 2 a 2 3 a 3 4 a 1 5 b 1 6 b 2 7 b 3 8 b 2 比如我想用一条语句查询得到test1不重复的所有数据,那就必须使用distinct去掉多余的重复记录。 select distinct test1 from test 得到的结果是: test1 a b 好像达到效果了,可是,我想要得到的是id值?改一下查询语句吧: select distinct test1, id from test test1 id a 1 a 2 a 3 a 4 b 5 b 6 b 7 b 8 distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与test1都相同的才会被排除,这不可能的,id是自动增长的。。。 我们再改改查询语句: select id, distinct test1 from test 很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。 通过查阅手册,可以通过group_cancat来实现: SELECT id, group_concat( DISTINCT test1 ) FROM test GROUP BY test1 id group_concat( distinct test1 ) 1 a 5 b 不过它只有在4.1.0以后才能用,对于那些老版本的数据库是不行的。 可以通过其他函数来实现: select *, count(distinct test1) from test group by test1 id test1 test2 count( distinct test1 ) 1 a 1 1 5 b 1 1 最后一项是多余的,不用管就行了,目的达到。。。。。 还有更简单的方法也可以实现: select id, test1 from test group by test1 id test1 1 a 5 b
标签:
mysql
,
distinc
还不快抢沙发
添加新评论
昵称
邮箱
网站
内容
提交评论
最新文章
linux系统644、755、777权限详解及修改用户所在组方法
php导入excel
mysql 导出表信息
linux命令
MYSQL查询表字段名、注释、字段类型
如何正确配置Nginx+PHP
MySQL之alter语句用法总结
mysql中select distinct的用法
Linux中vim的用法
Linux命令SCP
最新回复
搬瓦工: 路过 学习了
刘大喵: 不错的技术博客
BEEKC: 老哥 对不住 我网站换了个主题,没有侧栏了,所以友...
siwesley: 已加
Dong Daming: 兄弟 申请友情链接 我已经加你了名称 Beekc地...
阅非APP: 阅非APP,一款每天可以分红APP,赶快加入享受每天分红吧!
siwesley: 最近真是沉迷于ps4不可自拔。。。
siwesley: 不是诶,借鉴的别人的。
沉默是金: 你的主题是自己写的吗?第一次见
siwesley: 已添加~ 博客名称可以改成 Zxy博客
标签
apache
3
文件
3
框架
2
命令
2
php
2
归档
August 2019
September 2018
July 2018
June 2018
May 2018
友情链接
HanSon 的博客
laravel-china
曦语喵
ZGQ's Blog
Bgods's Blog
绛木子
Beekc
其他
文章 RSS
评论 RSS