国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 津南区| 吉水县| 监利县| 司法| 曲水县| 石狮市| 三门峡市| 聂荣县| 奇台县| 泗洪县| 惠东县| 宜丰县| 行唐县| 桃源县| 东丰县| 米易县| 上饶县| 连山| 招远市| 武陟县| 霍州市| 无锡市| 鄂尔多斯市| 佛教| 社会| 炉霍县| 宁津县| 明溪县| 华安县| 陆丰市| 博野县| 建德市| 新巴尔虎右旗| 新营市| 长阳| 南雄市| 江源县| 阳西县| 雷山县| 金门县| 渝中区|