Mysql如何實(shí)現(xiàn)更新偶數(shù)行或者奇數(shù)行
一、需求背景
在處理數(shù)據(jù)時(shí),由于表的主鍵是data_seq_id, 自己定義的一個(gè)序列,例如:INWDN000827....
這些數(shù)據(jù)是需要用戶來維護(hù)的,如果用戶維護(hù)成兩份,因?yàn)橹麈I設(shè)計(jì)成這樣已經(jīng)無法避免了。如何清除掉重復(fù)數(shù)據(jù)呢?
二、查找重復(fù)數(shù)據(jù)
通過group by count 查找到重復(fù)數(shù)據(jù)。
data_seq_id | value | flag |
A001 | v1 | Y |
A002 | v1 | Y |
A003 | v2 | Y |
A004 | v2 | Y |
三、update 奇數(shù)行的flag為N
如何找到奇數(shù)行或者偶數(shù)行呢?
select * from( select @rownum := @rownum + 1 as row_num, t.* from m_bis_data_d t,( select @rownum := 0 ) tmp_table) t where t.row_num % 2 = 1
通過這個(gè)sql 可以將奇數(shù)行找到data_seq_id 。然后將其update 掉即可。
四、總結(jié)
實(shí)際上解決這個(gè)問題應(yīng)該是從根本上解決,主鍵不能這么隨意,應(yīng)該在設(shè)定主鍵之初就考慮到這個(gè)問題。我的想法是用value 然后md5生成主鍵,即不會(huì)重復(fù)也可以確保不會(huì)數(shù)據(jù)重復(fù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql 截取指定的兩個(gè)字符串之間的內(nèi)容
今天我同事在用mysql的時(shí)候,需要對(duì)一個(gè)字符串中的指定內(nèi)容進(jìn)行截取2009-07-07SQL?JOIN?子句合并多個(gè)表中相關(guān)行全面指南
這篇文章主要為大家介紹了SQL?JOIN?子句合并多個(gè)表中相關(guān)行全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11給mysql數(shù)據(jù)庫的字段設(shè)默認(rèn)值方式
這篇文章主要介紹了給mysql數(shù)據(jù)庫的字段設(shè)默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10