SQL中同时修改两个表里的字段

2024-11-21 20:45:53
推荐回答(3个)
回答1:

嘿嘿,本来也以为UPDATE 语句只可以对单表操作,
后来还是查了一下,发现MYSQL 可以对多表更新:
13.2.10. UPDATE Syntax
单表更新的语法:
Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
多表更新的语法:
Multiple-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]

单表就不说了,下面讲讲多表:
For the multiple-table syntax, UPDATE updates rows in each table named in table_references that satisfy the conditions. In this case, ORDER BY and LIMIT cannot be used.

要英文不好看就看看例子吧:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

讲讲table_references:
其实就是一个连接方式:join;

你要多表做更新操作,肯定要把表关联起来。

你的例子中:
mysql> insert into abc(a) values('1');
Query OK, 1 row affected, 5 warnings (0.02 sec)

mysql> insert into def(a) values('1');
Query OK, 1 row affected, 5 warnings (0.00 sec)

mysql> select * from abc,def;
+------+---+---+---+---+---+------+---+---+---+---+---+
| a | b | c | e | f | g | a | b | c | e | f | g |
+------+---+---+---+---+---+------+---+---+---+---+---+
| 1 | | | | | | 1 | | | | | |
+------+---+---+---+---+---+------+---+---+---+---+---+
1 row in set (0.00 sec)

mysql> update abc,def set abc.b='hello',def.c='brother' where abc.a=def.a;
Query OK, 2 rows affected, 2 warnings (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 2

mysql> select * from abc,def;
+------+------+---+---+---+---+------+---+------+---+---+---+
| a | b | c | e | f | g | a | b | c | e | f | g |
+------+------+---+---+---+---+------+---+------+---+---+---+
| 1 | hell | | | | | 1 | | brot | | | |
+------+------+---+---+---+---+------+---+------+---+---+---+
1 row in set (0.00 sec)

如果你用其他数据库,也可以try 下。不知道支持不。

回答2:

除非你自己开发一个新的数据语言标准,sql查询语言出现两代了,1976年出现sql第一代标准,1988年出现sql第二代标准,你都可以去查,从来不准许一句话中更新两张表,你究竟要问几次呢?
就连一代sql标准出现之前最早的数据操作语言data-pro语言也是不允许这种相当危险的操作的
如果你不信任网络上的回答,完全不必要在这里请教,你可以自己去看书。

回答3:

update 一次只能更新一个表 你只能分两条进行,但是你可以把第2条语句嵌套进去,形成一句命令
或则如果这两个表有关系的话你设置表的关联