繁体   English   中英

MySQL - 更新<values> ) 在哪里</values>集(n<table></table><div id="text_translate"><p> 只是为了让大象离开房间,因为有很多类似的问题。 我浏览了其他名称相似的帖子,但没有找到我要找的东西。 话虽如此,我可能只是没有看到如何将他们的问题实施到我的具体实施中<br><br>我正在尝试将表中的多行更新为所有 [可能] 不同的值,但我不知道在使用外键定位时我将更新多少行。 但是,由于数据库限制,可以安全地假设我有正确数量的输入。 (例如 3 行 3 个值,或 5 行 5 个值)并且即使假设不安全,我也不介意抛出错误,因为如果确实发生了错误,这将确保数据完整性......<br><br> 将哪些值分配给哪些行并不重要。<br><br> 这是我尝试过的一些示例。</p><pre class="lang-sql prettyprint-override"> UPDATE table1 SET table1.column1 IN (17, 37, 62) WHERE table1.foreign_key = 877;</pre><p> 之后我发现你不能这样使用 IN ......然后我尝试了:</p><pre class="lang-sql prettyprint-override"> UPDATE table1 SET table1.column1 = (17, 37, 62) WHERE table1.primary_key IN (SELECT primary_key FROM table1 WHERE foreign_key = 877);</pre><p> 但是,“您不能在 FROM 子句中指定目标表 'table1' 进行更新”<br><br> 对于 SELECT 然后在(n_rows + 1 个查询)之后进行更新(如下所示),这将是相当微不足道的,所以我假设可以在一个查询中完成。</p><pre class="lang-sql prettyprint-override"> SELECT primary_key from table1 where foreign_key =?;,[877]</pre><p> 然后映射值和主键(我使用的是nodejs后端)</p><pre class="lang-sql prettyprint-override"> UPDATE table1 set column1 =? where primary_key =?;,[value1,primary_key1]</pre><p> 困难的部分似乎是</p><ol><li>如何将 map 多个值添加到多行。</li><li> 如何在运行时获取每一行的唯一 ID。<br></li></ol><p> 我不介意是否必须使用存储过程,我只是真的不想向数据库发送 n+1 个查询。</p></div>.`外键`<table> </table>

[英]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]

困难的部分似乎是

  1. 如何将 map 多个值添加到多行。
  2. 如何在运行时获取每一行的唯一 ID。

我不介意是否必须使用存储过程,我只是真的不想向数据库发送 n+1 个查询。

您只需要像下面这样的一个查询来更新您的数据。

insert into TABLENAME(key, column1, column2, ...) values (?),(?),... on duplicate key update column1=value(column1), column2=value(column2), ...;

您也可以通过此链接访问我的帖子。

Node.js 用 Mysql 中的数组更新表

2天前我遇到了同样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM