MySQL-如何根据条件将值从一个表传输到另一个表

标签 mysql

我想插入表 b表中的值 a基于比较 a 的条件至b .

例如,让 a就是这个student表:

╔═════╦═══════╦══════╗
║ id* ║ name  ║ age  ║
╠═════╬═══════╬══════╣
║  1  ║ John  ║  12  ║
║  2  ║ Sam   ║  14  ║
╚═════╩═══════╩══════╝

bgrade表:

╔═════╦═══════╗
║ 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/

相关文章:

php - 如何通过串联和 pdo 将 SELECT 语句包含到 INSERT INTO 中

Mysql - where子句比完全扫描慢

php - 为处理可变数量的质量规范的 mySQL/PHP 应用程序构建数据结构的正确方法

mysql - 当 GROUP BY Id 和 DATE 时获取 COUNT 个 id

MySQL 带条件计数

mysql - 使用子选择或多个查询?

php - 添加两个数组变量

java - 快速写入持久队列

PHP:从日历范围期间检索天数

mysqlsequelize.js如何链接两个表