我想插入表 b
表中的值 a
基于比较 a
的条件至b
.
例如,让 a
就是这个student
表:
╔═════╦═══════╦══════╗
║ id* ║ name ║ age ║
╠═════╬═══════╬══════╣
║ 1 ║ John ║ 12 ║
║ 2 ║ Sam ║ 14 ║
╚═════╩═══════╩══════╝
让 b
是 grade
表:
╔═════╦═══════╗
║ id ║ name ║
╠═════╬═══════╣
║ ? ║ John ║
║ ? ║ Sam ║
╚═════╩═══════╝
我认为语法可能如下所示:
INSERT INTO grade.id
SELECT id FROM student
WHERE grade.name = student.name;
输出表应该是:
╔═════╦═══════╗
║ id ║ name ║
╠═════╬═══════╣
║ 1 ║ John ║
║ 2 ║ Sam ║
╚═════╩═══════╝
我收到错误 grade.id
不是一张 table ,这是有道理的。但我不确定如何做我想做的事。
对于这个人为的例子感到抱歉。真正的表要复杂得多。基本上,我想将某些值从一个表复制到另一个表,前提是某些条件匹配。
最佳答案
暂时忽略您可能破坏数据库规范化的事实,您几乎已经得到答案(您也可以 find in the manual )
INSERT INTO grade (id,name)
SELECT id,name FROM student
;
插入会添加行,但不会更改它们。为此,您需要更新或更换。
Update grade
Set id=( select id from student
WHERE grade.name = student.name);
顺便说一句,如果student.name不唯一,这将会中断。
关于MySQL-如何根据条件将值从一个表传输到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512648/