mysql 開發(fā)技巧之JOIN 更新和數(shù)據(jù)查重/去重
主要涉及:JOIN 、JOIN 更新、GROUP BY HAVING 數(shù)據(jù)查重/去重
1 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN(MySQL 不支持)、CROSS JOIN
這是在網(wǎng)上找到的非常好的一篇博文,圖解 join 語句:
CODING HORROR-A Visual Explanation of SQL Joins
下圖可以很清楚的明白,join 的數(shù)據(jù)選取范圍
[][1]
[1]: http://7xs09x.com1.z0.glb.clouddn.com/160725-imooc-mysql-development-skills-notes-001.png
2 更新使用過濾條件中包括本身的表
更新 t1 t2 表中 col_a 重復(fù)的字段
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
可轉(zhuǎn)換為:
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_a SET col_a = 'hi' ;
3 查詢重復(fù)數(shù)據(jù)、刪除重復(fù)數(shù)據(jù)
利用 GROUP BY 和 HAVING 查詢重復(fù)數(shù)據(jù)
SELECT col_a, COUNT(*) FROM t1 GROUP BY col_a HAVING COUNT(*) > 1 ;
刪除重復(fù)數(shù)據(jù),對于相同數(shù)據(jù)保留 ID 最大的
DELETE a FROM 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_a WHERE a.id < b.id ;
感謝閱讀此文,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
mysqldump數(shù)據(jù)庫備份參數(shù)詳解
這篇文章主要介紹了mysqldump數(shù)據(jù)庫備份參數(shù)詳解,需要的朋友可以參考下2014-05-05Mac環(huán)境mysql5.7.21 utf8編碼問題及解決方案
本篇教程給大家簡單介紹下Mac環(huán)境mysql5.7.21 utf8編碼問題及解決方案,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2018-03-03Window系統(tǒng)下自動備份MySql數(shù)據(jù)庫方法
Window下可以使用Bat批處理文件來對MySql進(jìn)行備份操作,備份時一般數(shù)據(jù)量較大的情況可以使用復(fù)制文件的方式,但是這種方式要求服務(wù)器停機(jī)或者停止寫入命令,不大使用2012-11-11MySQL備份與恢復(fù)之真實(shí)環(huán)境使用冷備(2)
這篇文章主要介紹了MySQL備份與恢復(fù)之真實(shí)環(huán)境使用冷備,需要的朋友可以參考下2015-08-08Mysql 5.7 忘記root密碼或重置密碼的詳細(xì)方法
在Centos中安裝完MySQL數(shù)據(jù)庫以后,不知道密碼,這可怎么辦,下面給大家說一下怎么重置密碼2016-12-12