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

首頁 > 數據庫 > MySQL > 正文

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

2020-01-18 23:51:48
字體:
來源:轉載
供稿:網友
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`;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芒康县| 晴隆县| 富裕县| 沈丘县| 恩施市| 杭锦旗| 莎车县| 镇赉县| 常山县| 额济纳旗| 弥勒县| 剑河县| 三门县| 张北县| 公主岭市| 东方市| 衡阳市| 青岛市| 阳曲县| 乃东县| 沿河| 皋兰县| 鄂伦春自治旗| 施秉县| 榆林市| 奎屯市| 育儿| 五台县| 浑源县| 宁强县| 台前县| 玉龙| 伊宁市| 信阳市| 宜君县| 新沂市| 茂名市| 庆阳市| 中卫市| 武威市| 洛南县|