我对这种形式还比较陌生,如果有人可以阐明如何解决我面临的这个特定用例,那将有很大的帮助 在我的情况下。
我有2个表 Table_A和Table_B
table_A具有2个字段id,状态为Table_A(id为int,table_a_status int),其中id为主键。
Table_B具有3个字段id,状态为Table_A(id int,table_a_id int,table_b_status int),其中table_a_id是外键,而id是Table_B的主键。
Table_A
id table_a_status
1 1
2 1
Table_B
id table_a_id table_b_status
1 1 1
2 1 1
3 2 1
4 2 1
有很多方法可以更新多个表中的多行,当前我正在使用过程来解决此问题,但是它效率不高,我想知道一种使用单个查询来更新两个表的有效方法。 我尝试使用查询:
UPDATE Table_A
INNER JOIN Table_B ON Table_B.table_a_id = Table_A.id
SET Table_A.table_a_status = 1, Table_B.table_b_status =1
WHERE Table_A.id IN (1,2);
UPDATE Table_A, Table_B
SET Table_A.table_a_status = 1, Table_B.table_b_status =1
WHERE Table_B.table_a_id = Table_A.id AND Table_A.id IN (1,2);
但是如果我有一个条件要更新2个id(1,2),则两个查询都给出错误。操作数代码应包含1列, 但是当我一次更新一个ID时它起作用 例如)
UPDATE Table_A, Table_B
SET Table_A.table_a_status = 1, Table_B.table_b_status =1
WHERE Table_B.table_a_id = Table_A.id AND Table_A.id IN (1);
我知道操作数代码应包含1列,因为子查询在多个表中返回多个行,所以调用了错误。
是否有其他方法可以同时更新多个表中的多行