mysql - MySQL - 更新集(n) 在哪里
只是为了让大象离开房间,因为有很多类似的问题。我浏览了其他名称相似的帖子,但没有找到我要找的东西。话虽这么说,我可能只是没有看到如何将他们的问题实现到我的具体实现中
我正在尝试将表中的多行更新为所有 [可能] 不同的值,但我不知道我将更新多少行我使用外键定位。但是,由于数据库限制,可以安全地假设我有正确数量的输入。(例如 3 行 3 个值,或
问题描述
只是为了让大象离开房间,因为有很多类似的问题。我浏览了其他名称相似的帖子,但没有找到我要找的东西。话虽这么说,我可能只是没有看到如何将他们的问题实现到我的具体实现中
我正在尝试将表中的多行更新为所有 [可能] 不同的值,但我不知道我将更新多少行我使用外键定位。但是,由于数据库限制,可以安全地假设我有正确数量的输入。(例如 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]
困难的部分似乎是
- 如何将多个值映射到多行。
- 如何在运行时获取每一行的唯一 ID。
我不介意是否必须使用存储过程,我只是真的不想向数据库发送 n+1 个查询。
你的意思可能是这样的:
for line in f:
sid, sname, sage = line.split(",")
student = Student(sid, sname, int(sage))
student_list.append(student)
哦,你忘了return student_list
从功能。
顺便说一句,如果您学习 python,请不要忘记查看 pep-8 样式指南:https ://www.python.org/dev/peps/pep-0008/
解决方案
您只需要像下面这样的一个查询来更新您的数据。
insert into TABLENAME(key, column1, column2, ...) values (?),(?),... on duplicate key update column1=value(column1), column2=value(column2), ...;
您也可以通过此链接访问我的帖子。
2天前我遇到了同样的问题。
推荐阅读
- apache-spark - 使用 Spark Structured Streaming 从目录读取内容时如何实现一次性处理?
- wordpress - 古腾堡和经典编辑器 - 如何在经典编辑器中使用自定义古腾堡块?
- flutter - 在颤动中检测“输入键”按下
- opcode - 用于将字符串地址压入堆栈的 x86 操作码
- database - 无法在 ubuntu 上运行 Mongodb
- java - Java Web 服务数据库连接
- android - 光标位置不正确:空时编辑文本(重力:右)
- javascript - 简化简单的三元表达式
- android - 从 RecyclerView 删除项目时出现问题
- r - R中模型的3D绘图?