mysql 开发技巧之JOIN 更新和数据查重/去重
主要涉及:JOIN、JOIN更新、GROUPBYHAVING数据查重/去重
1INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLJOIN(MySQL不支持)、CROSSJOIN
这是在网上找到的非常好的一篇博文,图解join语句:
CODINGHORROR-AVisualExplanationofSQLJoins
下图可以很清楚的明白,join的数据选取范围
[][1]
[1]:http://7xs09x.com1.z0.glb.clouddn.com/160725-imooc-mysql-development-skills-notes-001.png
2更新使用过滤条件中包括本身的表
更新t1t2表中col_a重复的字段
UPDATEt1 SETcol_a='hi' WHEREt1.col_aIN( SELECTb.col_a FROMt1aINNERJOINt2bon a.col_a=b.col_a ) ; ERROR:1093
可转换为:
UPDATEt1aaJOIN( SELECTb.col_a FROMt1aINNERJOINt2bon a.col_a=b.col_a )bbonaa.col_a=bb.col_a SETcol_a='hi' ;
3查询重复数据、删除重复数据
利用GROUPBY和HAVING查询重复数据
SELECTcol_a,COUNT(*) FROMt1 GROUPBYcol_aHAVINGCOUNT(*)>1 ;
删除重复数据,对于相同数据保留ID最大的
DELETEa FROMt1aJOIN( SELECTcol_a,COUNT(*),MAX(id)ASid FROMt1 GROUPBYcol_aHAVINGCOUNT(*)>1 )bONa.col_a=b.col_a WHEREa.id<b.id ;
感谢阅读此文,希望能帮助到大家,谢谢大家对本站的支持!