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ù)的查詢(xún),刪除,與合并
1.對(duì)于部門(mén)表部門(mén)編號(hào)重復(fù)的數(shù)據(jù)
進(jìn)行相關(guān)操作
-- 先查看部門(mén)信息原表的數(shù)據(jù) select * from t_dept;

-- 查詢(xún)出所有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);

-- 查詢(xún)出所有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ēng)相同的產(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中進(jìn)行數(shù)據(jù)的加密和解密存儲(chǔ)的操作方法
在MySQL中,我們可以使用對(duì)稱(chēng)加密算法和非對(duì)稱(chēng)加密算法對(duì)數(shù)據(jù)進(jìn)行加密和解密存儲(chǔ),通過(guò)合理選擇加密算法和密鑰管理,可以有效提高數(shù)據(jù)的安全性,防止敏感信息的泄露和非法獲取,下面給大家分享MySQL中進(jìn)行數(shù)據(jù)的加密和解密存儲(chǔ)方法,感興趣的朋友一起看看吧2024-05-05
MySQL數(shù)據(jù)庫(kù)使用規(guī)范總結(jié)
本篇文章給大家詳細(xì)分類(lèi)總結(jié)了數(shù)據(jù)庫(kù)相關(guān)規(guī)范,幫助大家發(fā)揮出數(shù)據(jù)庫(kù)的性能,感興趣的朋友可以了解下2020-08-08
MySQL數(shù)據(jù)庫(kù)使用mysqldump導(dǎo)出數(shù)據(jù)詳解
mysqldump是mysql用于轉(zhuǎn)存儲(chǔ)數(shù)據(jù)庫(kù)的實(shí)用程序。它主要產(chǎn)生一個(gè)SQL腳本,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫(kù)所必需的命令CREATE TABLE INSERT等。接下來(lái)通過(guò)本文給大家介紹MySQL數(shù)據(jù)庫(kù)使用mysqldump導(dǎo)出數(shù)據(jù)詳解,需要的朋友一起學(xué)習(xí)吧2016-04-04
MySQL窗口函數(shù)OVER使用示例詳細(xì)講解
這篇文章主要介紹了MySQL窗口函數(shù)OVER()用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01

