当前位置: 首页 > 编程笔记 >

mysql 开发技巧之JOIN 更新和数据查重/去重

金子轩
2023-03-14
本文向大家介绍mysql 开发技巧之JOIN 更新和数据查重/去重,包括了mysql 开发技巧之JOIN 更新和数据查重/去重的使用技巧和注意事项,需要的朋友参考一下

主要涉及: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]: http://7xs09x.com1.z0.glb.clouddn.com/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_a
SET col_a = 'hi' 
;

3 查询重复数据、删除重复数据

利用 GROUP BY 和 HAVING 查询重复数据

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

删除重复数据,对于相同数据保留 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
;

感谢阅读此文,希望能帮助到大家,谢谢大家对本站的支持!

 类似资料:
  • 本文向大家介绍mysql优化小技巧之去除重复项实现方法分析【百万级数据】,包括了mysql优化小技巧之去除重复项实现方法分析【百万级数据】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了mysql优化小技巧之去除重复项实现方法。分享给大家供大家参考,具体如下: 说到这个去重,脑仁不禁得一疼,尤其是出具量比较大的时候。毕竟咱不是专业的DB,所以嘞,只能自己弄一下适合自己去重方法了。 首先按照

  • 本文向大家介绍MySQL 数据查重、去重的实现语句,包括了MySQL 数据查重、去重的实现语句的使用技巧和注意事项,需要的朋友参考一下 有一个表user,字段分别有id、nick_name、password、email、phone。 一、单字段(nick_name) 查出所有有重复记录的所有记录 查出有重复记录的各个记录组中id最大的记录 查出多余的记录,不查出id最小的记录 删除多余的重复记录,

  • 本文向大家介绍Android开发小技巧篇之集合,包括了Android开发小技巧篇之集合的使用技巧和注意事项,需要的朋友参考一下 1.对于过多的控件,功能类似,数量又多的,可以用include方法。在实现应用中,可以把控件放入List集合中。 以上内容比较简短,简单给大家介绍了Android开发小技巧篇集合的相关知识,希望大家喜欢。

  • 本文向大家介绍Mysql删除重复的数据 Mysql数据去重复,包括了Mysql删除重复的数据 Mysql数据去重复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee

  • 本文向大家介绍Android开发技巧之Fragment的懒加载,包括了Android开发技巧之Fragment的懒加载的使用技巧和注意事项,需要的朋友参考一下 前言 所谓懒加载,就是当fragment完全可见的时候我们再去加载数据,我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或

  • 本文向大家介绍App开发建议技巧,包括了App开发建议技巧的使用技巧和注意事项,需要的朋友参考一下 开工准备 在项目业务代码开工之前,最好把这些问题都解决掉,否则必将酿成大祸害。它们是: 组件路由 异步处理 组件化模块工程 全局网络拦截器 异常统一处理器 基础视图组件封装 日志记录工具 解决写无数次一模一样代码的模板(如自定义MVP模板) 机型适配 特定的机型上出问题时,别着急。我们可以尝试以下几