源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-02-18 12:07 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:MySQL大表中重复字段的高效率查询方法
MySQL大表重复字段应该如何查询到呢?这是很多人都遇到的问题,下面就教您一个MySQL大表重复字段的查询方法,供您参考。 数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。 如果仅仅是查找数据库中name不重复的字段,很容易
[u]复制代码[/u] 代码如下:
SELECT min(`id`),`name` FROM `table` GROUP BY `name`;
   但是这样并不能得到说有重复字段的id值。(只得到了最小的一个id值) 查询哪些字段是重复的也容易 
[u]复制代码[/u] 代码如下:
SELECT `name`,count(`name`) as count FROM `table` GROUP BY `name` HAVING count(`name`) >1 ORDER BY count DESC;
但是要一次查询到重复字段的id值,就必须使用子查询了,于是使用下面的语句来实现MySQL大表重复字段查询。 
[u]复制代码[/u] 代码如下:
SELECT `id`,`name` FROM `table` WHERE `name` in ( SELECT `name` FROM `table` GROUP BY `name` HAVING count(`name`) >1 );
但是这条语句在mysql中效率太差,感觉mysql并没有为子查询生成临时表。 [b]于是使用先建立临时表[/b] 
[u]复制代码[/u] 代码如下:
create table `tmptable` as ( SELECT `name` FROM `table` GROUP BY `name` HAVING count(`name`) >1 );
[b]然后使用多表连接查询[/b]
[u]复制代码[/u] 代码如下:
SELECT a.`id`, a.`name` FROM `table` a, `tmptable` t WHERE a.`name` = t.`name`;
结果这次结果很快就出来了。 [b]用 distinct去重复[/b]
[u]复制代码[/u] 代码如下:
SELECT distinct a.`id`, a.`name` FROM `table` a, `tmptable` t WHERE a.`name` = t.`name`;
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部