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

主要涉及: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_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
, join
, 更新
, 开发技巧
数据查重/去重
mysql left join、mysql join、mysql inner join、mysql full join、mysql join on,以便于您获取更多的相关知识。

时间: 2024-10-03 22:51:41

mysql 开发技巧之JOIN 更新和数据查重/去重_Mysql的相关文章

Mysql的列修改成行并显示数据的简单实现_Mysql

创建测试表: DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `year` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `amount` double DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 插入数据: INSERT INTO `test` VALUES ('1991', '1', '1.1'); INSERT INTO

MySQL中union和join语句使用区别的辨析教程_Mysql

union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同的(Schema of both sides of union should match.).也就是说如果A表中有三条数据,B表中有两条数据,那么A union B就会有五条数据.说明一下union 和union all的差别,对于union如果存在相同的数据记录会被合并,而union all不会合

mysql 实现互换表中两列数据方法简单实例_Mysql

由于最近项目,有这样一个需求,是把数据库中的两列数据互换,经过好久才搞定,这里写个简单实例,做过记录. 1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', `name` varchar(50) NOT NULL COMMENT '产品名称', `original_price` decimal(5,2) unsigned NOT NULL COMMEN

MySQL中使用load data命令实现数据导入的方法_Mysql

使用方式如下: 复制代码 代码如下: mysql>load data local infile "D:/ab.txt" into table mytbl(name,age); 使用上述的命令就可以将D:/ab.txt文件的内容导入到表mytbl中,其中name和age是表mytbl的字段,对应ab.txt文件中每行的数据.如果编译安装mysql时没有指定 –enable-local-infile,那么在使用上述命令时会报如下错误: 复制代码 代码如下: ERROR 1148 (4

MySQL触发器运用于迁移和同步数据的实例教程_Mysql

1.迁移数据进行数据库移植,SQL Server=>MySQL.SQL Server上有如下的Trigger SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER TRIGGER [trg_risks] ON dbo.projectrisk FOR INSERT, UPDATE AS BEGIN UPDATE projectrisk SET classification = case when calc>= 9 then 3 when c

Mysql 取字段值逗号第一个数据的查询语句_Mysql

复制代码 代码如下: select count(*) as lot from OA_sample_check where left(ecnNO, LOCATE(',',ecnNO)-1)='a1'

java-使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接更新数据库数据

问题描述 使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接更新数据库数据 我从网上找了几篇,大多都是在JSP操作的,我想仿照http://blog.csdn.net/kakukeme/article/category/819230 该网址的例子做,但是数据却没有显示出来,所以想问下各位有没完整的可以运行的实例,给我一个. 解决方案 参考一下吧:http://download.csdn.net/detail/qq_19558705/9393750 解决方案二: ?用se

PHP与MySQL开发中页面出现乱码的一种解决方法_php技巧

一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的"天书",其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存.要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码: 1.文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的.记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题.而ZendStud

动态更新highcharts数据的实现方法_javascript技巧

动态更新highcharts数据的实现方法 <!doctype html> <html> <head> <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="htt