mysql如何判斷同一字段是否有重復(fù)數(shù)據(jù)
mysql判斷同一字段是否有重復(fù)數(shù)據(jù)
有時(shí)候我們呢會(huì)遇到業(yè)務(wù)問(wèn)題:判斷數(shù)據(jù)庫(kù)字段是否含有重復(fù)數(shù)據(jù)?
解決方式
其實(shí)很簡(jiǎn)單,直接寫(xiě)sql語(yǔ)句:
select 字段名 from 表名 group by 字段名 having count(*)>1
原因刨析
我們運(yùn)用group by來(lái)進(jìn)行分組,然后再把分組里大于1條的數(shù)據(jù)挑出來(lái)自然就是重復(fù)的數(shù)據(jù)。
實(shí)例展示
1.創(chuàng)建一張表

2.里面有‘張三’這個(gè)重復(fù)數(shù)據(jù),把它挑出來(lái)
select name from testname GROUP BY name having count(*)>1

3.結(jié)果是只有'張三'這個(gè)結(jié)果,得到了重復(fù)的數(shù)據(jù)。
mysql對(duì)某個(gè)字段重復(fù)數(shù)據(jù)的查詢,刪除,與合并
1.對(duì)于部門表部門編號(hào)重復(fù)的數(shù)據(jù)
進(jìn)行相關(guān)操作
-- 先查看部門信息原表的數(shù)據(jù) select * from t_dept;

-- 查詢出所有d_no有重復(fù)的數(shù)據(jù)(沒(méi)有重復(fù)的不顯示,即104在表中只有一條,所以不顯示) select * from t_dept td where td.d_no in (select t1.d_no from t_dept t1 group by t1.d_no having count(1) > 1);

-- 查詢出所有d_no有重復(fù)的數(shù)據(jù)(只顯示多余的那幾條,比如101和103表中一共有三條,只顯示多余的兩條,同樣102有兩條,那么只顯示多余的那一條) ???????select * from t_dept td where td.d_id not in (select min(t1.d_id) min_id from t_dept t1 group by t1.d_no);

-- 刪除表中d_no重復(fù)的數(shù)據(jù),只留一條 ???????delete from t_dept td where td.d_id not in (select tab.min_id from (select min(t1.d_id) min_id from t_dept t1 group by t1.d_no) tab);
2.對(duì)于故障信息表將相同設(shè)備的問(wèn)題信息合并成一條
-- 先查看故障信息原表的數(shù)據(jù) select * from t_fault;

-- 將故障等級(jí)和故障信息拼接在一起(CONCAT_WS()函數(shù))
???????select tf.f_id,tf.f_no,tf.f_name,CONCAT_WS('-',tf.f_level,tf.f_desc) as f_msg from t_fault tf 
-- 將故障信息和故障等級(jí)拼接在一起(這里使用CONCAT_WS()函數(shù)),并將編號(hào)名稱相同的產(chǎn)品合并成一條(這里使用GROUP_CONCAT()函數(shù))
select tab.f_no,tab.f_name,GROUP_CONCAT(tab.f_msg SEPARATOR ';') goup_msg from
(select tf.f_id,tf.f_no,tf.f_name,CONCAT_WS('-',tf.f_level,tf.f_desc) as f_msg from t_fault tf ) tab
group by tab.f_no,tab.f_name
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql explain的用法(使用explain優(yōu)化查詢語(yǔ)句)
mysql explain可以幫助你檢查索引和更好的優(yōu)化查詢語(yǔ)句,今天特地學(xué)習(xí)了下mysql explain的用法,需要的朋友可以參考下2017-01-01
一文深入理解MySQL中的UTF-8與UTF-8MB4字符集
在全球化的今天,數(shù)據(jù)的存儲(chǔ)與處理需要支持多種語(yǔ)言與字符集,對(duì)于 Web 應(yīng)用程序和數(shù)據(jù)庫(kù)系統(tǒng)來(lái)說(shuō),字符集的選擇尤為重要,特別是在處理包含多種語(yǔ)言字符(如中文、阿拉伯文、表情符號(hào)等)的系統(tǒng)中,本文將深入探討 MySQL 中的兩個(gè)常見(jiàn)字符集:UTF-8 和 UTF-8MB42024-11-11
window10中mysql8.0修改端口port不生效的解決方法
mysql配置文件默認(rèn)位置,端口號(hào)等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下2023-11-11
Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法
下面小編就為大家?guī)?lái)一篇Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
一次Mysql使用IN大數(shù)據(jù)量的優(yōu)化記錄
這篇文章主要給大家介紹了關(guān)于Mysql使用IN大數(shù)據(jù)量的優(yōu)化的實(shí)戰(zhàn)記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
MySQL快速?gòu)?fù)制數(shù)據(jù)庫(kù)數(shù)據(jù)表的方法
有些時(shí)候,我們?yōu)榱丝焖俅罱ㄒ粋€(gè)測(cè)試環(huán)境,或者說(shuō)是克隆一個(gè)網(wǎng)站,需要復(fù)制已經(jīng)存在的mysql數(shù)據(jù)庫(kù)。下面小編給大家介紹mysql快速?gòu)?fù)制數(shù)據(jù)庫(kù)數(shù)據(jù)表的方法,小伙伴們跟著小編一起學(xué)習(xí)吧2015-10-10

