相关文章推荐

发现之前并没有整理过mysql表关联更新,这里补上。有时候我们需要用b表去更新a表的记录,如果只有一个字段那通常我们可能就 update set a.xxx=(select b.xxx from b where a.ib.id) ,但是字段一多,显得就不是特别方便了,加上不好做限制,所以就了update join。

CREATE TABLE `unit` (
  `unit_id` int(11) NOT NULL AUTO_INCREMENT,
  `price` decimal(10,2) DEFAULT NULL COMMENT '价格指数',
  `fix_flag` tinyint(1) DEFAULT '0' COMMENT '修复标记'

修复表/关联更新表

CREATE TABLE `unit_fix` (
  `unit_id` int(11) DEFAULT NOT NULL,
  `price` decimal(10,2) DEFAULT NULL COMMENT '价格指数'

蹩脚的更新语句

UPDATE unit u 
SET u.bid_unit =( SELECT x.price FROM unit_fix x WHERE x.unit_id = u.unit_id ),
	u.fix_flag = 1 
WHERE
	u.unit_id IN ( SELECT xx.unit_id FROM unit_fix xx );

关联更新语句

#by zhengkai.blog.csdn.net
#MYSQL UPDATE关联更新
UPDATE unit u
JOIN unit_fix uf ON u.unit_id = uf.unit_id 
SET u.price = uf.price,
	u.fix_flag = 1 
WHERE
	uf.tender_id IS NOT NULL;

MySQL UPDATE JOIN语法

在MySQL中,可以在UPDATE语句中使用JOIN子句执行跨表更新。

#by zhengkai.blog.csdn.net
UPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2, 
    T2.C3 = expr
WHERE condition
  • 首先,在UPDATE子句之后,指定主表(T1)和希望主表连接表(T2)。 请注意,必须在UPDATE子句之后至少指定一个表。UPDATE子句后未指定的表中的数据未更新。
  • 第二,指定一种要使用的连接,即 INNER JOINLEFT JOINON连接条件 。JOIN子句必须出现在UPDATE子句之后。
  • 第三,要为要更新的T1和/或T2表中的列分配新值 。SET
  • 第四,WHERE子句中的条件用于指定要更新的行,例如什么值不为空之类。

如果您学习过了UPDATE语句教程,您可能会注意到使用以下语法更新数据交叉表的另一种方法:

#UPDATE交叉更新
UPDATE T1, T2
SET T1.c2 = T2.c2,
	T1.c3 = T2.c3
WHERE T1.id= T2.id AND condition

在这个UPDATE交叉更新语句具有隐式INNER JOIN子句的UPDATE JOIN工作相同。也就是等同于:

#UDATE关联更新
UPDATE T1
INNER JOIN T2 ON T1.id = T2.id
SET T1.C2 = T2.C2, 
	T1.C3 = T2.C3
WHERE condition

如果你发现无法update join,试下双表update语句

update unit u,unit_fix uf
set u.price=uf.price,u.bid_unit=uf.bid_unit,u.fix_flag=2,u.business_status=uf.business_status
where u.unit_id=uf.unit_id;
				
MySQL中通过关联Update将一张一个字段更新到另一个更新book_borrow,设置其中的student_name为student中的name,关联条件为book_borrow.student_id = student_id student book_borrow 其他不同方式更新 保留原数据的更新 只会更新student中有的数据,student中查不到的数据,在book_borrow中还保持不变,不会更新,相当于内连接 update book_borrow br,st
This article explores the SQL Server Update Join statement in T-SQL for SQL Server. 本文探讨了T-SQL for SQL Server中SQL Server Update Join语句。 介绍 (Introduction) We use the Update statement in SQL...
where a.id=b.id Solution 3: 采用子查询 update student s set city_name = (select name from city where code = s.city_code); 以上这篇mysql一个更新一个
mysql应用中常常需要通过别的的查询结果来更新,但很少会本的查询结果再来更新的,下面就看看从本查询结果更新应该怎么做吧。 classify: 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该为tdeptmembers, 系统中有另外一张 tuserinfo 记录了人员信息。 要求将 tdeptmembers 中有变化的信息更新到 t_user 中,这个需求就是「跨更新」啦 不带脑子出门的就写出了下面的 SQL 看到身后 DBA 在修仙,想着让他帮润色一下,于是发给了他,然后甩手...
我们经常使用join子句来查询中的行(在INNER JOIN的情况下),或者可能没有(在LEFT JOIN的情况下)另一个中的相应行。 在MySQL中,可以在UPDATE语句中使用JOIN子句执行跨更新MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2...
最近,带我的大哥让我批量更新一个里面的字段。因为曾经我使用过insert into select ... 猜想update 也应该有这样的操作,于是上网上搜了一下,很明显失败了,执行报错,估计人家是sqlserver, 于是仿照网上的sqlserver 写了一个 mysql版本的 update table1 s join table2k on (s.关联字段=k.关联字段) set s.要改...
MySQL 中,可以使用 `UPDATE` 语句来更新中的数据。当需要更新多个中的数据时,可以使用 `JOIN` 语句将这些关联起来。 下面是一个例子,演示如何使用 `UPDATE` 和 `JOIN` 语句来更新两个中的数据: UPDATE table1 LEFT JOIN table2 ON table1.id = table2.id SET table1.column1 = 'new_value' WHERE table2.column2 = 'some_value'; 在上面的例子中,我们使用了 `LEFT JOIN` 来关联 `table1` 和 `table2` ,并将它们的 `id` 列作为关联条件。然后使用 `SET` 语句来更新 `table1` 中的 `column1` 列。注意,这里使用的是 `table1.column1`,而不是 `table2.column1`,因为我们要更新的是 `table1` 中的数据。最后,使用 `WHERE` 语句来指定筛选条件,只有当 `table2` 中的 `column2` 列等于某个值时,才会执行更新操作。 需要注意的是,当使用 `LEFT JOIN` 进行多关联时,可能会出现某些行在2中不存在的情况。在这种情况下,`UPDATE` 语句仍然会更新 `table1` 中的数据,但是没有匹配的行将被设置为 `NULL` 值。如果不想更新这些行,可以添加一个 `WHERE` 条件来排除它们。 另外,需要注意的是,MySQL 中的 `UPDATE` 语句是一个非常强大的操作,如果使用不当,可能会导致数据不一致或者数据丢失的问题。因此,在进行更新操作时,一定要谨慎操作,先进行备份,确保不会造成不可逆的后果。
VUE报错You are using the runtime-only build of Vue where the template compiler is not available 厉害厉害,感谢楼主 Windows10安装Ubuntu子系统+配置SSH连接+安装xfce4图形界面+配置xrdc远程桌面连接 chaohui_chen1024: 怎么样才能让win和Ubuntu界面保持一致 Nginx配置/.well-known/pki-validation/ Moshow郑锴: 欢迎老哥分享一下配置 Nginx配置/.well-known/pki-validation/ alsdjfklasjdfoa;sd: 我靠,昨天可以,今天不行,
 
推荐文章