Mysql 子表上多行的联接更新
假设我想更新这些表。 这就是我需要实现的目标:Mysql 子表上多行的联接更新,mysql,multiple-tables,Mysql,Multiple Tables,假设我想更新这些表。 这就是我需要实现的目标: parent_table: ID | FIELD1 | FIELD2 ____|________|________ 1 |........|...... 2 |........|..... 3 |.............. child_table: ID | FIELD3 ___|________ 1 | 18 1 | 7 2 | .. 1 | .. 3 | .. 2 | .. 请注意,在更
parent_table:
ID | FIELD1 | FIELD2
____|________|________
1 |........|......
2 |........|.....
3 |..............
child_table:
ID | FIELD3
___|________
1 | 18
1 | 7
2 | ..
1 | ..
3 | ..
2 | ..
请注意,在更新过程中,每个ID的子表中的条目数可能会有所不同
是否可以在一个查询中获得相同的结果?
我不能使用事务处理
也许前两个查询更容易合并。
我试图在更新期间连接子表并设置空值,但我不知道如何处理多行。。
是否可以像嵌套选择一样进行嵌套更新?您可以在一个命令中更新多个表:
UPDATE parent_table SET
FIELD1 = 'XXX',
FIELD2 = 'YYY'
WHERE ID = 2;
DELETE FROM child_table
WHERE ID = 2;
INSERT INTO child_table (ID, FIELD3)
VALUES (2, 50),
VALUES (2, 17),
VALUES (2, 9);
然而,我不认为您可以在同一个命令中执行更新和删除-但我必须承认我不确定
您可以阅读有关多个表更新的更多信息
另一种(也是首选的)方法是在父表上创建触发器,该触发器将在更新时从子表中删除相关记录。您可以在一个命令中更新多个表:
UPDATE parent_table SET
FIELD1 = 'XXX',
FIELD2 = 'YYY'
WHERE ID = 2;
DELETE FROM child_table
WHERE ID = 2;
INSERT INTO child_table (ID, FIELD3)
VALUES (2, 50),
VALUES (2, 17),
VALUES (2, 9);
然而,我不认为您可以在同一个命令中执行更新和删除-但我必须承认我不确定
您可以阅读有关多个表更新的更多信息
另一种(也是首选的)方法是在父表上创建触发器,在更新时从子表中删除相关记录。当然,问题是:如何更新联接表中的多行?即使在there are allowed(idk)中放入一个CASE语句,如何解释表中条目数与我要更新的条目数之间的不匹配?例如这里有两个ID=2的条目,但是如果我想放另一个呢。。也许更新就是做不到。通过添加“另一个”你的意思是:例如更改ID2和ID3?不,我的意思是如果
FIELD3
是一个字符串设置为“5,40,15”
,我可能需要将其更新为“3,5,7,8,15,7”
,即子表中的行数可能会有所不同。我可以执行插入。。在重复密钥更新时
但是在我的表中没有主
或唯一
键,在这种情况下,我想我应该创建一个DB过程,接收所有参数并连续运行更新和插入。当然,问题是:如何更新联接表中的多行?即使在there are allowed(idk)中放入一个CASE语句,如何解释表中条目数与我要更新的条目数之间的不匹配?例如这里有两个ID=2的条目,但是如果我想放另一个呢。。也许更新就是做不到。通过添加“另一个”你的意思是:例如更改ID2和ID3?不,我的意思是如果FIELD3
是一个字符串设置为“5,40,15”
,我可能需要将其更新为“3,5,7,8,15,7”
,即子表中的行数可能会有所不同。我可以执行插入。。在重复密钥更新时
但是在我的表中没有主
或唯一
键,在这种情况下,我想我应该创建一个DB过程来接收所有参数并连续运行更新和插入。