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

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

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

-- 查詢出所有d_no有重復(fù)的數(shù)據(jù)(沒有重復(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.對于故障信息表將相同設(shè)備的問題信息合并成一條
-- 先查看故障信息原表的數(shù)據(jù) select * from t_fault;

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

