mysql 開發技巧之JOIN 更新和資料查重/去重_Mysql

來源:互聯網
上載者:User

主要涉及:JOIN 、JOIN 更新、GROUP BY HAVING 資料查重/去重

1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支援)、CROSS JOIN

這是在網上找到的非常好的一篇博文,圖解 join 語句:

CODING HORROR-A Visual Explanation of SQL Joins

下圖可以很清楚的明白,join 的資料選取範圍

[][1]
[1]: yun_qi_img/160725-imooc-mysql-development-skills-notes-001.png

2 更新使用過濾條件中包括本身的表

更新 t1 t2 表中 col_a 重複的欄位

UPDATE t1 SET col_a = 'hi' WHERE t1.col_a IN ( SELECT b.col_a FROM t1 a INNER JOIN t2 b on a.col_a = b.col_a);ERROR:1093 

可轉換為:

UPDATE t1 aa JOIN( SELECT b.col_a FROM t1 a INNER JOIN t2 b on a.col_a = b.col_a)bb on aa.col_a= bb.col_aSET col_a = 'hi' ;

3 查詢重複資料、重複資料刪除資料

利用 GROUP BY 和 HAVING 查詢重複資料

SELECT col_a, COUNT(*)FROM t1GROUP BY col_a HAVING COUNT(*) > 1;

重複資料刪除資料,對於相同資料保留 ID 最大的

DELETE aFROM t1 a JOIN ( SELECT col_a,COUNT(*),MAX(id) AS id FROM t1 GROUP BY col_a HAVING COUNT(*) > 1)b ON a.col_a = b.col_aWHERE a.id < b.id;

感謝閱讀此文,希望能協助到大家,謝謝大家對本站的支援!

聯繫我們

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