如何在MySQL表中找到重復(fù)的值

在本教程中运杭,您將學(xué)習(xí)如何在MySQL中找到一個(gè)或多個(gè)列的重復(fù)值蛹头。

在開始之前

由于原因很多,數(shù)據(jù)庫中的重復(fù)事件發(fā)生很多遮晚。查找重復(fù)值是使用數(shù)據(jù)庫時(shí)必須處理的重要任務(wù)之一击孩。

對于演示,我們將創(chuàng)建一個(gè)名為contacts表鹏漆,其中包含四個(gè)列:id巩梢,first_namelast_nameemail艺玲。

USE testdb;

CREATE TABLE contacts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(255) NOT NULL
);

以下語句將行插入到contacts表中:

INSERT INTO contacts (first_name,last_name,email) 
VALUES ('Carine ','Schmitt','carine.schmitt@qq.com'),
       ('Jean','King','jean.king@yiibai.com'),
       ('Peter','Ferguson','peter.ferguson@google.com'),
       ('Janine ','Labrune','janine.labrune@aol.com'),
       ('Jonas ','Bergulfsen','jonas.bergulfsen@mac.com'),
       ('Janine ','Labrune','janine.labrune@aol.com'),
       ('Susan','Nelson','susan.nelson@qq.com'),
       ('Zbyszek ','Piestrzeniewicz','zbyszek.piestrzeniewicz@qq.com'),
       ('Roland','Keitel','roland.keitel@yahoo.com'),
       ('Julie','Murphy','julie.murphy@yahoo.com'),
       ('Kwai','Lee','kwai.lee@google.com'),
       ('Jean','King','jean.king@qq.com'),
       ('Susan','Nelson','susan.nelson@qq.comt'),
       ('Roland','Keitel','roland.keitel@yahoo.com');

然后括蝠,查詢表中的數(shù)據(jù)如下 -

SELECT 
    *
FROM
    contacts;

執(zhí)行上面查詢,得到以下結(jié)果 -

+----+------------+-----------------+--------------------------------+
| id | first_name | last_name       | email                          |
+----+------------+-----------------+--------------------------------+
|  1 | Carine     | Schmitt         | carine.schmitt@qq.com          |
|  2 | Jean       | King            | jean.king@yiibai.com               |
|  3 | Peter      | Ferguson        | peter.ferguson@google.com      |
|  4 | Janine     | Labrune         | janine.labrune@aol.com         |
|  5 | Jonas      | Bergulfsen      | jonas.bergulfsen@mac.com       |
|  6 | Janine     | Labrune         | janine.labrune@aol.com         |
|  7 | Susan      | Nelson          | susan.nelson@qq.com            |
|  8 | Zbyszek    | Piestrzeniewicz | zbyszek.piestrzeniewicz@qq.com |
|  9 | Roland     | Keitel          | roland.keitel@yahoo.com        |
| 10 | Julie      | Murphy          | julie.murphy@yahoo.com         |
| 11 | Kwai       | Lee             | kwai.lee@google.com            |
| 12 | Jean       | King            | jean.king@qq.com               |
| 13 | Susan      | Nelson          | susan.nelson@qq.comt           |
| 14 | Roland     | Keitel          | roland.keitel@yahoo.com        |
+----+------------+-----------------+--------------------------------+
14 rows in set

contacts表中饭聚,有一些行在first_name忌警,last_nameemail列中具有重復(fù)的值,下面來看看如何查詢它們秒梳。

在一列中找到重復(fù)的值

在基于一列的表中找到重復(fù)值法绵,則使用以下語句:

SELECT 
    col, 
    COUNT(col)
FROM
    table_name
GROUP BY col
HAVING COUNT(col) > 1;

如果表中出現(xiàn)多個(gè)值,則該值將被視為重復(fù)酪碘。在這個(gè)語句中朋譬,使用COUNT函數(shù)的GROUP BY子句來計(jì)算指定列(col)的值。HAVING子句中的條件僅包含值count大于1的行兴垦,這些行是重復(fù)的行徙赢。

可以使用此查詢在contacts表中查找具有重復(fù)email的所有行字柠,如下所示:

SELECT 
    email, 
    COUNT(email)
FROM
    contacts
GROUP BY email
HAVING COUNT(email) > 1;

以下顯示查詢的輸出:

+-------------------------+--------------+
| email                   | COUNT(email) |
+-------------------------+--------------+
| janine.labrune@aol.com  |            2 |
| roland.keitel@yahoo.com |            2 |
+-------------------------+--------------+
2 rows in set

如上查詢結(jié)果中可以看到,有一些行具有相同的電子郵件狡赐。

在多個(gè)列中查找重復(fù)值

有時(shí)窑业,希望基于多個(gè)列而不是一個(gè)查找重復(fù)。在這種情況下枕屉,您可以使用以下查詢:

SELECT 
    col1, COUNT(col1),
    col2, COUNT(col2),
    ...
 
FROM
    table_name
GROUP BY 
    col1, 
    col2, ...
HAVING 
       (COUNT(col1) > 1) AND 
       (COUNT(col2) > 1) AND 
       ...

只有當(dāng)列的組合重復(fù)時(shí)常柄,行才被認(rèn)為是重復(fù)的,所以在HAVING子句中使用了AND運(yùn)算符搀擂。

例如西潘,要使用first_namelast_nameemail列中的重復(fù)值在contacts表中查找行哥倔,請使用以下查詢:

SELECT 
    first_name, COUNT(first_name),
    last_name,  COUNT(last_name),
    email,      COUNT(email)
FROM
    contacts
GROUP BY 
    first_name , 
    last_name , 
    email
HAVING  COUNT(first_name) > 1
    AND COUNT(last_name) > 1
    AND COUNT(email) > 1;

執(zhí)行上面查詢后秸架,得到以下輸出:

+------------+-------------------+-----------+------------------+-------------------------+--------------+
| first_name | COUNT(first_name) | last_name | COUNT(last_name) | email                   | COUNT(email) |
+------------+-------------------+-----------+------------------+-------------------------+--------------+
| Janine     |                 2 | Labrune   |                2 | janine.labrune@aol.com  |            2 |
| Roland     |                 2 | Keitel    |                2 | roland.keitel@yahoo.com |            2 |
+------------+-------------------+-----------+------------------+-------------------------+--------------+
2 rows in set

在本教程中,您已經(jīng)學(xué)會(huì)了如何根據(jù)MySQL中一個(gè)或多個(gè)列的值來找到重復(fù)的行咆蒿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末东抹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沃测,更是在濱河造成了極大的恐慌缭黔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂破,死亡現(xiàn)場離奇詭異馏谨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)附迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門惧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喇伯,你說我怎么就攤上這事喊儡。” “怎么了稻据?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵艾猜,是天一觀的道長。 經(jīng)常有香客問我捻悯,道長匆赃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任今缚,我火速辦了婚禮算柳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荚斯。我一直安慰自己埠居,他們只是感情好查牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布事期。 她就那樣靜靜地躺著滥壕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兽泣。 梳的紋絲不亂的頭發(fā)上绎橘,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音唠倦,去河邊找鬼称鳞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稠鼻,可吹牛的內(nèi)容都是我干的冈止。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼候齿,長吁一口氣:“原來是場噩夢啊……” “哼熙暴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慌盯,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤周霉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亚皂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱箱,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年灭必,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狞谱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禁漓,死狀恐怖跟衅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璃饱,我是刑警寧澤与斤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站荚恶,受9級特大地震影響撩穿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谒撼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一食寡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廓潜,春花似錦抵皱、人聲如沸善榛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽移盆。三九已至,卻和暖如春伤为,著一層夾襖步出監(jiān)牢的瞬間咒循,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工绞愚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叙甸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓位衩,卻偏偏與公主長得像裆蒸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子糖驴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理僚祷,服務(wù)發(fā)現(xiàn),斷路器遂赠,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • 目錄 MySQL簡介 基本輸入查詢 創(chuàng)建并使用數(shù)據(jù)庫 SELECT語句 選擇特殊行 條件 通配符 選擇特殊列 排序...
    鬼宇書生閱讀 1,031評論 2 1
  • SQL語言基礎(chǔ) 本章久妆,我們將會(huì)重點(diǎn)探討SQL語言基礎(chǔ),學(xué)習(xí)用SQL進(jìn)行數(shù)據(jù)庫的基本數(shù)據(jù)查詢操作跷睦。另外請注意本章的S...
    厲鉚兄閱讀 5,329評論 2 46
  • 有這樣一個(gè)禪理故事筷弦,很有意思: 老和尚問小沙彌:“如果你進(jìn)一步則死,退一步則亡抑诸,你應(yīng)該怎么辦烂琴?”小沙彌毫不猶豫地說...
    凌宗偉閱讀 288評論 0 0
  • My angel, I would give my life for one kiss of you.
    AesEM閱讀 172評論 0 0