如何在mysql

时间:2019-01-23 21:29:53

标签: mysql sql-update

我对这种形式还比较陌生,如果有人可以阐明如何解决我面临的这个特定用例,那将有很大的帮助 在我的情况下。

我有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列,因为子查询在多个表中返回多个行,所以调用了错误。

是否有其他方法可以同时更新多个表中的多行

0 个答案:

没有答案