[英]MySQL: How to update foreign key field, and create a relationship, after table values have been set with default values?
[英]MySQL - UPDATE <table> SET (n<values>) WHERE <table>.`foreign_key`
只是为了让大象离开房间,因为有很多类似的问题。 我浏览了其他名称相似的帖子,但没有找到我要找的东西。 话虽如此,我可能只是没有看到如何将他们的问题实施到我的具体实施中
我正在尝试将表中的多行更新为所有 [可能] 不同的值,但我不知道在使用外键定位时我将更新多少行。 但是,由于数据库限制,可以安全地假设我有正确数量的输入。 (例如 3 行 3 个值,或 5 行 5 个值)并且即使假设不安全,我也不介意抛出错误,因为如果确实发生了错误,这将确保数据完整性......
将哪些值分配给哪些行并不重要。
这是我尝试过的一些示例。
UPDATE table1
SET
table1.column1 IN (17 , 37, 62)
WHERE
table1.foreign_key = 877;
之后我发现你不能这样使用 IN ......然后我尝试了:
UPDATE table1
SET
table1.column1 = (17 , 37, 62)
WHERE
table1.primary_key IN (SELECT
primary_key
FROM
table1
WHERE
foreign_key = 877);
但是,“您不能在 FROM 子句中指定目标表 'table1' 进行更新”
对于 SELECT 然后在(n_rows + 1 个查询)之后进行更新(如下所示),这将是相当微不足道的,所以我假设可以在一个查询中完成。
SELECT primary_key from table1 where foreign_key = ?;,[877]
然后映射值和主键(我使用的是nodejs后端)
UPDATE table1 set column1 = ? where primary_key = ?;,[value1,primary_key1]
困难的部分似乎是
我不介意是否必须使用存储过程,我只是真的不想向数据库发送 n+1 个查询。
您只需要像下面这样的一个查询来更新您的数据。
insert into TABLENAME(key, column1, column2, ...) values (?),(?),... on duplicate key update column1=value(column1), column2=value(column2), ...;
您也可以通过此链接访问我的帖子。
2天前我遇到了同样的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.