mysql如何判斷同一字段是否有重復(fù)數(shù)據(jù)
mysql判斷同一字段是否有重復(fù)數(shù)據(jù)
有時(shí)候我們呢會(huì)遇到業(yè)務(wù)問題:判斷數(shù)據(jù)庫字段是否含有重復(fù)數(shù)據(jù)?
解決方式
其實(shí)很簡(jiǎn)單,直接寫sql語句:
select 字段名 from 表名 group by 字段名 having count(*)>1
原因刨析
我們運(yùn)用group by來進(jìn)行分組,然后再把分組里大于1條的數(shù)據(jù)挑出來自然就是重復(fù)的數(shù)據(jù)。
實(shí)例展示
1.創(chuàng)建一張表
2.里面有‘張三’這個(gè)重復(fù)數(shù)據(jù),把它挑出來
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ù)(沒有重復(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è)備的問題信息合并成一條
-- 先查看故障信息原表的數(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)化查詢語句)
mysql explain可以幫助你檢查索引和更好的優(yōu)化查詢語句,今天特地學(xué)習(xí)了下mysql explain的用法,需要的朋友可以參考下2017-01-01一文深入理解MySQL中的UTF-8與UTF-8MB4字符集
在全球化的今天,數(shù)據(jù)的存儲(chǔ)與處理需要支持多種語言與字符集,對(duì)于 Web 應(yīng)用程序和數(shù)據(jù)庫系統(tǒng)來說,字符集的選擇尤為重要,特別是在處理包含多種語言字符(如中文、阿拉伯文、表情符號(hào)等)的系統(tǒng)中,本文將深入探討 MySQL 中的兩個(gè)常見字符集:UTF-8 和 UTF-8MB42024-11-11window10中mysql8.0修改端口port不生效的解決方法
mysql配置文件默認(rèn)位置,端口號(hào)等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下2023-11-11Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法
下面小編就為大家?guī)硪黄狿ython3.6-MySql中插入文件路徑,丟失反斜杠的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06一次Mysql使用IN大數(shù)據(jù)量的優(yōu)化記錄
這篇文章主要給大家介紹了關(guān)于Mysql使用IN大數(shù)據(jù)量的優(yōu)化的實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09MySQL快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法
有些時(shí)候,我們?yōu)榱丝焖俅罱ㄒ粋€(gè)測(cè)試環(huán)境,或者說是克隆一個(gè)網(wǎng)站,需要復(fù)制已經(jīng)存在的mysql數(shù)據(jù)庫。下面小編給大家介紹mysql快速復(fù)制數(shù)據(jù)庫數(shù)據(jù)表的方法,小伙伴們跟著小編一起學(xué)習(xí)吧2015-10-10