MYSQL重複資料刪除資料

來源:互聯網
上載者:User

標籤:

 delete from co_jobinformation c
where c.name in (select cc.name from co_jobinformation cc group by  cc.name   having count(cc.name) > 1)
and rowid not in (select min(rowid) from co_jobinformation e group by e.name having count(e.name )>1) 

之前在oracle資料庫中能重複資料刪除資料並且能保留一條唯一資料,但是相同的MySQL中就不行,

mysql有個特性,對於表進行修改,刪除操作,子查詢不能和外層的查詢的表一樣,所以在加個select就可以了

DELETE tt.*
FROM t_user tt  --這是操作的表
WHERE tt.username --這是使用者名稱重複的資料
IN(                      
  SELECT cc.username            
  FROM (                  
    SELECT b.*
    FROM t_user b
  ) cc
  GROUP BY cc.username
  HAVING COUNT(cc.username) >1
)
AND tt.id  --這裡是保留id最小的一條,應該比較容易看懂.
NOT IN(
  SELECT MIN(e.id)
FROM(
    SELECT ee.*
    FROM t_user ee) e
    GROUP BY e.username
    HAVING COUNT(e.username )>1)
  )
)

我寫的有點醜,但是我想要的結果實現了,就是把上面子查詢裡面的表換成select查詢,還請高手留下優質SQL,感激不盡!

MYSQL重複資料刪除資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.