- 浏览: 3557459 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
查看文章
|
mysql的distinct
2011-07-22 17:03
MySql中distinct的用法 2010-12-24 12:11:37| 分类:mysql| 标签:mysql 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 最后一项是多余的,不用管就行了,目的达到。。。。。 唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧,现在拿出来希望大家不要被这问题折腾。 哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,我继续忙碌。。。。。。 |
发表评论
-
mysql重新安装
2014-02-25 20:28 1184如何彻底卸载MySQL 本 ... -
免费数据库
2014-02-06 23:00 1214http://db4free.net/d4f_appl ... -
Error: Cannot create Windows service for MySql. Error: 0
2013-07-08 09:41 1379Error:Cannot create Windows se ... -
Mac OS X 安装mysql过程
2013-05-09 04:14 1532Mac OS X 安装mysql过程 Posted on ... -
MySQL左连接、右连接
2012-10-15 14:18 1449MySQL左连接、右连接 ... -
mysql存储过程
2012-10-11 10:13 1493我们大家都知道MySQL 存储过程是从 MySQL 5. ... -
给表增加一列
2012-05-09 09:09 1476ALTER TABLE Teachers ADD COL ... -
将一张表的查询结果插入到另一张表(转)
2012-05-08 11:26 2483将一张表的查询结果插入到另一张表 方法一: 代码 ... -
mysql必知必会 over 存储过程和触发器
2012-03-01 13:48 1991========== 咒骂一句mysql必知必会,存储过程的 ... -
mysql视图的理解和使用
2012-03-01 09:32 1923CREATE TABLE tb_x ( xid ... -
mysql 删除表 创建表 等操作
2012-03-01 08:42 2649TRUNCATE TABLE tb_1;删除一张表 然后 ... -
insert 插入语句
2012-02-29 21:46 0一般不要使用没有明确给出列的列表的insert语句,这样很不安 ... -
超详细mysql left join,right join,inner join用法分析(转)
2012-02-29 21:01 1680下面是例子分析表A记录如下: aID aNum 1 a2005 ... -
mysql 多表查询的步骤
2012-02-29 15:11 1753子查询 我们很多时候的表 都是关联的比如 ... -
mysql主键
2012-02-29 11:06 1740/** * 主键 * 一列或者一组列,其值能够唯 ... -
数据库事物的四个特性
2012-02-26 18:28 3259到现在为止才真的搞清楚这四个事件任务的意思。 我 ... -
Mysql的乱码的解决方式
2012-02-14 16:23 0/** * Mysql的乱码的解决方式 * ... -
DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试(转)
2012-02-14 07:56 1782DBCP,C3P0,Tomcat_JDBC 性能及 ... -
MySql存储例程、存储过程
2012-02-01 19:58 1774<!--$sinatopbar--> ... -
mysql事务处理
2012-02-01 19:57 1739<!--$sinatopbar--> ...
相关推荐
在MySQL数据库中,优化`DISTINCT`操作是一个关键的性能提升策略,特别是在处理大量数据时。上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一...
MySQL 中 DISTINCT 用法详解 MySQL 中的 DISTINCT 关键字用于返回唯一不同的值,避免重复值的出现。当我们在查询表中数据时,可能会遇到重复值的情况,这时使用 DISTINCT 关键字可以帮助我们返回唯一的值。 ...
在MySQL中,`DISTINCT`的使用方式非常灵活,可以从单个列到多个列进行操作,也可以与聚合函数如`COUNT()`结合使用。以下是关于`DISTINCT`在SQL中的具体用法和一些注意事项。 1. **单列去重** 当我们只对单一列应用...
在MySQL中,`DISTINCT`的使用方式和功能与其他SQL数据库系统(如SQL Server、Access等)大体相同,但有一些细微的差别。以下是对`DISTINCT`用法的详细解释: 1. **单列去重**: 当我们需要从一个表中获取唯一的某...
在数据库查询操作中,经常需要使用`DISTINCT`关键字来去除重复记录,确保结果集中的每一条记录都是唯一的。然而,在某些场景下,使用`DISTINCT`可能会导致性能问题,尤其是在与`ORDER BY`或`LIMIT`结合使用时。为了...
今天,我们将深入探讨如何使用`DISTINCT`关键字在MySQL中查询多条不重复记录值,这不仅是一种实用技能,也是提升数据处理效率的关键所在。 ### `DISTINCT`关键字详解 `DISTINCT`关键字在SQL查询中扮演着一个至关...
当你想要从查询结果中去除重复的特定字段时,可以在`SELECT`语句中使用`DISTINCT`关键字。例如,如果我们有一个`user`表,包含`id`和`name`字段,要获取所有不重复的用户名,可以使用以下语句: ```sql SELECT ...
当`DISTINCT` 在多列查询中使用时,可能会出现歧义。如果想要分别统计每列的不重复值,可以考虑使用 `GROUP BY` 或 `GROUP_CONCAT` 函数。例如,如果想单独统计 `id` 和 `type` 的不重复值,可以使用 `GROUP BY`: ...
2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用; 3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的 4.不能与all同时使用,默认情况下,查询时返回的...
本文将深入探讨MySQL中的`DISTINCT`语句,以及如何在Visual C++(简称VC)开发环境中与MySQL数据库进行交互。 `DISTINCT`是SQL语言中的一个关键字,用于从查询结果中消除重复的行。当你执行一个`SELECT DISTINCT`...
在某些情况下,MySQL可以使用松散索引扫描来执行DISTINCT操作。例如,当查询只包含DISTINCT关键字和一个被索引的列时,MySQL会遍历索引,对每个不同值形成一个组,然后返回每个组的第一个记录。在EXPLAIN计划中,`...
本文将详细介绍这两个语句的使用方法。 首先,`DISTINCT`关键字是用来去除查询结果中重复记录的。当你需要确保返回的每个记录都是唯一的,例如在查询用户名时,可以使用`DISTINCT`。基本语法是`SELECT DISTINCT...
- `DISTINCT` 不会进行聚合操作,它只是简单地找出并返回唯一的记录,所以它不支持在查询中使用聚合函数如`SUM`, `COUNT`, `AVG`, `MAX`, `MIN`等。 2. `GROUP BY` 关键字: - `GROUP BY` 用于将数据根据一个或多...
使用distinct在mysql中查询多条不重复记录值的解决办法 在 MySQL 中,使用 distinct 关键字可以过滤掉重复记录,只保留一条。但是,这个关键字只能返回它的目标字段,而无法返回其它字段。这使得在查询多条不重复...
另外一种情况是在聚合查询中使用`DISTINCT`,例如`SELECT COUNT(DISTINCT column) FROM tableName`,这将计算`column`字段中唯一值的数量。请注意,这种用法需要MySQL的版本支持,且在某些低版本的MySQL中可能无法...
MySQL 提供了两种转换数据布局的方法:行转列(Pivot)和列转行(Unpivot),这在处理复杂的数据汇总和展示时非常有用。本文将深入探讨这两种转换方法,并提供具体的 SQL 语句示例,以及创建示例表结构的 SQL 代码。...
MySQL中的`DISTINCT`关键字是用于消除查询结果中的重复行,从而返回唯一不同的值。它在数据查询中扮演着至关重要的角色,特别是在处理可能存在重复记录的数据表时。下面将详细介绍`DISTINCT`关键字的用法及其注意...