mysql update不能直接使用select的结果

在sql server中,我们可是使用以下update语句对表进行更新:
update a set a.xx= (select yy from b) ;
但是在mysql中,不能直接使用set select的结果,必须使用inner join:
update a inner join (select yy from b) c set a.xx = c.yy

例:

update mb_tariff a inner join

mb_tariff_temp b  set a.payment =  b.payment

where a.mybus_id = b.mybus_id

and a.tariff_id = b.tariff_id

自行示例:

UPDATE USER INNER JOIN (SELECT id,account FROM USER) c SET user.phone=c.account WHERE user.id = c.id

原文地址:https://www.cnblogs.com/baobeiqi-e/p/10019978.html

时间: 2024-10-10 08:48:14

mysql update不能直接使用select的结果的相关文章

mysql: update字段中带select

update字段中带select UPDATE tb_report_type A INNER JOIN (SELECT LEVEL_CODE FROM tb_report_type WHERE id = 'ED894BE001CE4F47A2916287A491B4E1') BSET A.LEVEL_CODE = CONCAT(B.LEVEL_CODE,'-',A.id) WHERE A.PARENT_ID = 'ED894BE001CE4F47A2916287A491B4E1'

Mysql update语句赋值嵌套与在表列中数据后面增加数据

1.Mysql update语句赋值嵌套select  点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id>5 and id<10; 报错了 ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause 经过研究 发现是 mysql 定义update语句不能同时对同一张进行set 赋值操作,也就是说 upd

mysql update与select结合修改表数据

在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下: update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name; 根据AB两个表的id相同为条件连接两表,  把A表的name修改为B的name,sql语句就如上所示. 参考原文:https://blog.csdn.net/qq_3682391

MySql Update Select 嵌套

UPDATE `TB_CM_Dic` SET `ParentID` = (SELECT `ID` FROM (SELECT * FROM `TB_CM_Dic`) AS B WHERE `DicName` = '药品类别') WHERE `ID` = ( SELECT `ID` FROM( SELECT * FROM `TB_CM_Dic` WHERE `DicName` = '日常用品' AND `ParentID` = ( SELECT `ID` D FROM `TB_CM_Dic` D W

Mysql update 错误

今天在工作的时候发现自己update 一个表的某个字段超时,想了好久,首先想到的办法是,延长操作时间: mysql> set innodb_lock_wait_timeout=100 mysql> show variables like 'innodb_lock_wait_timeout'; 但是时间虽然延长了,问题却没有得到解决,在网上找了一圈,发现可能是mysql事务没有提交,导致的锁表,解决办法如下: 1 select * from information_schema.innodb_t

mysql update操作

update语法 Single-table语法: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] Multiple-table语法: UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=exp

mysql update in 报错解决

在用到mysql  update in的时候报错 update area set status='ON' where id in(select id from area where status='ON' and name like '%市辖%') [SQL]update area set status='ON' where id in(select id from area where status='ON' and name like '%市辖%') [Err] 1093 - You can

MySQL UPDATE 查询

MySQL UPDATE 查询 如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作.. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 你可以同时更新一个或多个字段. 你可以在 WHERE 子句中指定任何条件. 你可以在一个单独表中同时更新数据. 当你需要更新数据表中指定行

MySql UPDATE更新语句备忘

在mysql中,不能直接使用set select的结果,必须使用inner join: update tb1 inner join (select `字段` from tb2)  tb3 on tb1.id =tb2.id  set tb1.`字段1` = tb3.`字段1` 在sql server中,我们可是使用以下update语句对表进行更新: update a set a.xx= (select yy from b) where a.id = b.id ; 类似JSON解析,MySql 5