• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > SQL中关于distinct关键字的四种用法

SQL中关于distinct关键字的四种用法

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了distinct,mysql等相关知识,希望本文的分享对您有所帮助
本篇文章给大家带来的内容是关于SQL中关于distinct关键字的四种用法(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了

下面先来看看例子:

table

id name

1 a

2 b

3 c

4 c

5 b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table

得到的结果是:

name

a

b

c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

id name

1 a

2 b

3 c

4 c

5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。

很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。

拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。

试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。

报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。

再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。

终于搞定了,不过这样一来,又必须要求客户也升级了。

突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?

赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。

现在将完整语句放出:

select *, count(distinct name) from table group by name

结果:

id name count(distinct name)

1 a 1

2 b 1

3 c 1

以上就是SQL中关于distinct关键字的四种用法的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQL字符型字段按数字型字段排序实现方法
  • SQL中关于distinct关键字的四种用法
  • 详解SQL中distinct的使用方法
  • mysql count distinct 统计结果去重
  • 详解distinct 和 row_number()和over() 的区别
  • sqlserver中distinct的用法(不重复的记录)
  • distinct 多列问题结合group by的解决方法
  • 使用distinct在mysql中查询多条不重复记录值的解决办法
  • oracle sql 去重复记录不用distinct如何实现
  • 分析MySQL中优化distinct的技巧

相关文章

  • 2017-05-11mysql5.5 master-slave(Replication)配置方法
  • 2017-05-11与MSSQL对比学习MYSQL的心得(四)--BLOB数据类型
  • 2017-05-11MySQL导出所有Index和约束的方法
  • 2018-12-05mysql 协议的认证包及代码详情介绍
  • 2018-12-05推荐10篇关于show的应用内容
  • 2018-12-05mysql中的用户id如何使用nginx访问日志来记录?
  • 2018-12-05ORACLE数据库事务隔离级别介绍
  • 2018-12-05MySQL两种非常规方式重置密码教程
  • 2018-12-05解析mysql的启动过程
  • 2017-05-11MySQL中的运算符使用实例展示

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 自动清理MySQL 的Lock 进程的脚本
    • MySQL优化之-备份和恢复代码详解(图)
    • Oracle存储过程基本语法介绍
    • 实例详解修改mysql允许主机访问权限的方法
    • 多表关联同时更新多条不同的记录方法分享
    • mysql基本语法
    • 有关sql语句优化的教程
    • MySQL关于使用变量实现各种排序的示例代码分析
    • SQL Server 高速缓存依赖分析
    • mysql中提高Order by语句查询效率的两个思路分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有