bitsCN.com

查询数据库多个字段名时的结果有重复的解决办法

查询数据库的结果有重复,怎么办?

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。

其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。

下面先来看看例子:

表的结构 `member`

CREATE TABLE IF NOT EXISTS `member`

( `uid` int(7) NOT NULL AUTO_INCREMENT,

`username` varchar(8) DEFAULT NULL,

`telephone` varchar(11) DEFAULT NULL,

PRIMARY KEY (`uid`) )

ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2003879 ;

转存表中的数据 `member`

INSERT INTO `member` (`uid`, `username`, `telephone`)

VALUES (2003875, 'qsdcz', '12345678902'),

(10034, 'asdf', '13989775873'),

(10023, 'qwer', '13989775873'),

(10039, 'edcvfr', '13267864587'),

(2003874, '234jhkus', '18701395130'),

(10982, '234jhkus', '18783493002'),

(12234, 'cfdfv', '13687879832'),

(2003876, NULL, '12345678901'),

(2003877, 'wertyuu', '12345678901'),

(2003878, 'rtyuijkd', '12345678901');

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

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

重复记录。

select distinct telephone from table

telephone的结果是:

12345678901

12345678902

13267864587

13687879832

13989775873

18701395130

18783493002

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

select distinct telephone,uid,username from table

结果会是:

uid username telephone

2003875 qsdcz 12345678902

10034 asdf 13989775873

10023 qwer 13989775873

10039 edcvfr 13267864587

2003874 234jhkus 18701395130

10982 234jhkus 18783493002

12234 cfdfv 13687879832

2003876 sdf 12345678901

2003877 wertyuu 12345678901

2003878 rtyuijkd 12345678901

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

select id, distinct name from table

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

该怎么办呢?我们用函数统计需要不重复的字段。居然成功了。

现在将完整语句放出:

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

结果:

uid username telephone

2003878 rtyuijkd 12345678901

2003875 qsdcz 12345678902

10039 edcvfr 13267864587

12234 cfdfv 13687879832

10023 qwer 13989775873

2003874 234jhkus 18701395130

0982 234jhkus 18783493002

目的达到。能够解决问题就可以了。

bitsCN.com

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql 联查字段名重复_查询数据库多个字段名时的结果有重复的解决办法_MySQL相关推荐

  1. mysql查询某个字段数量最多_查询一个表某个字段中出现次数最多的那个数据的前30名...

    MySQL查询重复出现次数最多的记录 chengxuyonghu关注0人评论3400人阅读2014-09-22 16:57:06 MySQL查询的方法很多,下面为您介绍的MySQL查询语句用于实现查询 ...

  2. MySQL - 查询数据库里所有表名和字段名

    查询数据库里所有表名和字段名的语句 SQL 查询所有表名 SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' SELECT * FROM INFORMATION_SC ...

  3. MySql 查询数据库中所有表名

    MySql 查询数据库中所有表名 查询数据库中所有表名 select table_name from information_schema.tables where table_schema='csd ...

  4. 查询数据库里所有表名和字段名的语句

    查询数据库里所有表名和字段名的语句 SQL 查询所有表名: SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' SELECT * FROM INFORMATION_S ...

  5. 查询数据库里所有表名,字段名的语句

    查询数据库里所有表名,字段名的语句 SQL查看所有表名: 1.select    name    from    sysobjects    where    type='U' 2.select * ...

  6. 查询数据库中所有表名

    查询数据库中所有表名 select table_name from information_schema.tables where table_schema='csdb' and table_type ...

  7. sql查询数据库中所有表名

    sql查询数据库中所有表名 查询数据库里所有表名和字段名的语句 SQLSERVER 查询所有表名: SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' SELECT ...

  8. 查询数据库表中字段的名称、类型、字段长度

    怎样查询数据库表中字段的名称.类型.字段长度 SQL server版: 今天用的是SQL server,查询当前数据库下,一张表的表名.字段名.字段类型.字段长度. SELECT a.name,b.n ...

  9. mysql出现1499错误_连接MySQL时出现1449与1045异常解决办法

    连接MySQL时出现1449与1045异常解决办法 mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解 ...

最新文章

  1. 聊聊EIGRP的自动汇总与手工汇总
  2. Fiori Elements setBusyIndicatorDelay调试的几个关键点
  3. QT示例:基于TCP 点对多Socket通讯(server,clients)
  4. 过拟合解决方法python_欠拟合、过拟合及其解决方法
  5. C++中for循环的5种语法
  6. Atitit nlp用到的技术与功能自然语言处理 v3 t99.docx Atitit nlp用到的技术与常见类库 目录 1. 常用的技术 1 1.1. 语言处理基础技术 分词 相似度等 1 1.2
  7. 国家开放大学计算机网络技术毕业设计,精编国家开放大学毕业论文:购物网站设计...
  8. 新点软件怎么导入清单_新点造价软件的QDZ招投标清单使用说明
  9. 【bzoj1059】 ZJOI2007矩阵游戏 二分图匹配
  10. 奥布莱恩杯尘埃落定 人工智能立功了!
  11. 【寻找最佳小程序】影视评分小工具“豆瓣评分”——产品设计要点及专家评析...
  12. 【Volume X has invalid topology for mapped brick meshing】
  13. QQ另存为出现“你没有权限在此位置中保存文件,请与管理员联系以获得相应权限”
  14. 如何制作CHM帮助文件
  15. 1235813找规律第100个数_2013年全国中考数学规律探索试题汇编
  16. 用汇编语言写51单片机程序开头为什么一般都这样:ORG 0000H LJMP MAIN ORG 0030H
  17. 强制OOALV运行数据修改事件
  18. 项目经理如何写年终总结,范文+PPT模板
  19. 跟新老板谈加薪条件的方法
  20. 小啊呜产品读书笔记001:《邱岳的产品手记-13》第24讲 产品案例分析:PathSource的混乱与直观 25讲 产品世界的暗黑模式:操纵的诱惑

热门文章

  1. 关于无刷电机驱动器的布板建议(FOC)
  2. python 工程进度计划_从零开始的项目实战(7)——项目进度述职报告
  3. 移动直播明争暗战五年:人性、梦想与资本的碰撞
  4. c语言程序设计 大学考试题库,广东工业大学《C语言程序设计》考试复习重点题库.pdf...
  5. ScriptManager脚本管理器
  6. CMD/DOS学习笔记
  7. Flink SQL搭建实时数仓DWD层
  8. nginx: 405 not allowed问题解决方法
  9. 案例分析:FIFA2018球员数据分析
  10. WEB请求处理二:Nginx请求反向代理