mysql如何去除兩個欄位資料相同的記錄?

來源:互聯網
上載者:User
比如說有個name列和一個eamil列,如果資料庫裡面有條記錄的這兩列的值相同(我說的是這條記錄的對應的那兩列的值相同,並不是同一條記錄裡面兩列值相同)的話就自動刪除其他多餘的列而保留最新的那一條(也就是ID最小的那個,ID是一個自增主鍵)
——————————————————
也就是說表裡面有兩條記錄的name都是admin,email都是abc@163.com,我只想保留其中一條,這該怎麼做

回複內容:

其實你會用英文搜尋的話。可以很方便在stack overflow上 找到相關的資訊 真的學CS的就不要用百度了 用google你會發現一個不一樣的世界的
隨便貼一個
sql - How can I remove duplicate rows?

稍微講一下其中一個思路(裡面有很多很好的答案 你可以自己去看)
就是做一個group by 保留其中id 最大的(你說自增長 id最大的應該就是最新的)就可以了
具體sql query 可以這樣寫
delete from test where id not in(select name,email,max(id) from test group by name,email having id is not null) 
distinct如果要保留id的最小值,例如:
資料:
執行sql:select count(*) as count ,name,id from ceshi group by name
最後要刪除的sql為:delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name)最後要刪除的sql為:delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name)

如果想保留id的最大值:
簡單的辦法是:delete from ceshi where id not in (select count(*) as count ,name,id from (select * from ceshi order by id desc) group by name)distinct其實非常的簡單,只需要把你這張表當成兩張表來處理就行了。
DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id < p2.id;
這裡有個問題,題主說保留最新的那一條(也就是ID最小的那個),既然是遞增,最新的不應該是最大的那條嗎?
上面的的語句,p1.id < p2.id,所以擷取到的是id最大的,因為p1.id小於p2.id就會被刪除,只有最大的值不滿足。如果要擷取id最小的那個,只需要把'<'改成'>'即可。
當然是用group by,count可以更精準控制重複n次的情況。不過目測樓主需求應該只要把重複的刪掉,保留最新的就可以了。DELETE FROM table WHERE id not in ( SELECT
tb.id FROM ( SELECT tmp.* FROM table tmp ) tb GROUP BY tb.field1, tb.field2,… );
table是表名,field是要去重的欄位。建立一個表,設定name,email為唯一索引,然後重新插入舊錶資料
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.