国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL大表中重復(fù)字段的高效率查詢方法

2024-07-24 12:48:50
字體:
供稿:網(wǎng)友
MySQL大表重復(fù)字段應(yīng)該如何查詢到呢?這是很多人都遇到的問題,下面就教您一個MySQL大表重復(fù)字段的查詢方法,供您參考。

數(shù)據(jù)庫中有個大表,需要查找其中的名字有重復(fù)的記錄id,以便比較。
如果僅僅是查找數(shù)據(jù)庫中name不重復(fù)的字段,很容易

復(fù)制代碼 代碼如下:

SELECT min(`id`),`name`
FROM `table`
GROUP BY `name`;
  
但是這樣并不能得到說有重復(fù)字段的id值。(只得到了最小的一個id值)
查詢哪些字段是重復(fù)的也容易 
復(fù)制代碼 代碼如下:

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

但是要一次查詢到重復(fù)字段的id值,就必須使用子查詢了,于是使用下面的語句來實現(xiàn)MySQL大表重復(fù)字段查詢。 
復(fù)制代碼 代碼如下:

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

但是這條語句在mysql中效率太差,感覺mysql并沒有為子查詢生成臨時表。
于是使用先建立臨時表 
復(fù)制代碼 代碼如下:

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

然后使用多表連接查詢
復(fù)制代碼 代碼如下:

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

結(jié)果這次結(jié)果很快就出來了。

用 distinct去重復(fù)
復(fù)制代碼 代碼如下:

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

您可能感興趣的文章:

MySQL中使用or、in與union all在查詢命令下的效率對比C++操作MySQL大量數(shù)據(jù)插入效率低下的解決方法MySQL優(yōu)化之如何查找SQL效率低的原因查詢mysql中執(zhí)行效率低的sql語句的方法mysql in語句子查詢效率慢的優(yōu)化技巧示例
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青川县| 黄浦区| 察隅县| 宜都市| 万年县| 宜黄县| 九台市| 子长县| 修文县| 合水县| 黄梅县| 永丰县| 封丘县| 临夏县| 观塘区| 天峻县| 维西| 廊坊市| 崇文区| 麦盖提县| 章丘市| 蒙自县| 景宁| 成武县| 无锡市| 渭源县| 恩施市| 贵定县| 南乐县| 白河县| 建平县| 沂源县| 当涂县| 昌乐县| 平远县| 利津县| 鸡东县| 邮箱| 五河县| 汶川县| 阿荣旗|