MySQL大表中重复字段的查询效率方法

MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考。

  数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。

  如果仅仅是查找数据库中name不重复的字段,很容易

SELECT min(`id`),`name`     FROM `table`     GROUP BY `name`;   

  但是这样并不能得到说有重复字段的id值。(只得到了最小的一个id值)

  查询哪些字段是重复的也容易

SELECT `name`,count(`name`) as count     FROM `table`     GROUP BY `name` HAVING count(`name`) >1     ORDER BY count DESC;   

  但是要一次查询到重复字段的id值,就必须使用子查询了,于是使用下面的语句来实现MySQL大表重复字段查询。

SELECT `id`,`name`     FROM `table`     WHERE `name` in (        SELECT `name`        FROM `table`        GROUP BY `name` HAVING count(`name`) >1    );  

  但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成临时表。

  于是使用先建立临时表

create table `tmptable` as (       SELECT `name`        FROM `table`        GROUP BY `name` HAVING count(`name`) >1    );  

  然后使用多表连接查询

SELECT a.`id`, a.`name`     FROM `table` a, `tmptable` t     WHERE a.`name` = t.`name`;   

  结果这次结果很快就出来了。

  用 distinct去重复

SELECT distinct a.`id`, a.`name`     FROM `table` a, `tmptable` t     WHERE a.`name` = t.`name`;

时间: 2024-11-05 20:10:31

MySQL大表中重复字段的查询效率方法的相关文章

MySQL大表中重复字段的高效率查询方法

MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较. 如果仅仅是查找数据库中name不重复的字段,很容易 代码如下: SELECT min(`id`),`name` FROM `table` GROUP BY `name`; 但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值) 查询哪些字段是重复的也容易 代码如下: SELECT `name`,

MySQL大表中重复字段的高效率查询方法_Mysql

MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考. 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较.如果仅仅是查找数据库中name不重复的字段,很容易 复制代码 代码如下: SELECT min(`id`),`name` FROM `table` GROUP BY `name`;   但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值)查询哪些字段是重复的也容易  复制代码 代码如下: SEL

select-ibatis查出mysql数据库表中某字段为null的数据???怎么写动态sql

问题描述 ibatis查出mysql数据库表中某字段为null的数据???怎么写动态sql 例如 select * from test where name is null 这条sql 中 IS NULL 报错,不知道ibatis里该怎么写??? 解决方案 我竟然不知道你想表达什么 解决方案二: 这条sql报错,不知道怎么改进??? 解决方案三: select * from table where content is "" 解决方案四: 在数据库中null 也是个值 解决方案五: 我

对Excel表中数据一对多查询的方法

  对Excel表中数据一对多查询的方法          举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的"EH图班"这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单. 今天说一个函数查询方面的方法:Index+Small. F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充: =INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),&quo

MySQL 删除表中重复记录

版本是:5.0.22-community-nt. 1. 为表folder新建一个临时表folder_tmp create table folder_tmp as select * from folder group by serverIp, userId, name, path; 这里根据serverIp, userId, name, path分组之后,表folder_tmp中留下的是主键id靠前的数据 2. 删除原来的表 drop table folder 3. 重命名表 alter tabl

oracle 11g在大表中添加字段及默认值--加速

今天遇到这个问题了.简单的增加语句,默认SQLPLUS执行,却会超时. 要增加客户端的TIMEOUT时间才可以解决.(感觉超过两三分钟,默认超时30秒) 另外, 也可以用两步操作(1,增加字段,2,修改默认值),或是加以NOT NULL参数. 参考URL: http://blog.csdn.net/mikean/article/details/24872955 http://blog.csdn.net/weiwangsisoftstone/article/details/7674916 类似语句

mysql中向表中某字段追加字符串的方法_Mysql

Update `表名` SET title = CONCAT(title,'MV') where articleid=3487 and title not like '%v'  

mysql-Mysql向表中某个字段添加有规律字符串怎么写SQL语句?例如(1P,2P,3P)

问题描述 Mysql向表中某个字段添加有规律字符串怎么写SQL语句?例如(1P,2P,3P) 如图所示 表 b 有三个字段aid,partname,partid,我希望partid字段可以根据partname字段的值添加有规律的字符串. 例如 partname字段值为PART 1则partid字段添加值 1P,partname字段值为PART 2则partid字段添加值 2P, partname的值除了上述格式还有TV 01,TV 02,特征都是字符串有(无)空格加数字, 还有种就是数字夹在字符

确定Oracle数据库表中重复记录的方法

作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录. 下面我们以表code_ref为例来讨论这个问题及其解决办法. ERROR位于第1行: ORA-01452: 无法 CREATE UNIQUE INDEX:找到重复的关键字 Oracle系统提示不能对表code_ref创建一个唯一索引,因为系统发现表中存在重复的记录.我们必须首先找到表中的重复记录并删除该记录,才可以创