【问题标题】:How to insert a column that matches id from both tables?如何从两个表中插入与 id 匹配的列?
【发布时间】:2021-01-09 00:28:12
【问题描述】:

我有 2 个表,用户和成绩。 用户看起来像这样:

ID | Name | Area
1  | John | Hub

还有这样的成绩:

ID | ID_from | ID_for | G1 | G2 | Area
1  |   23    |    22  |  9 | 8  |  NULL

我想将用户表中的区域插入到成绩表中,其中users.id = grades.ID_for

我已经试过了

INSERT INTO grades
SELECT area FROM users
where ID_for = users.id;

但我得到“#1054 - Champ 'ID_for' inconnu dans where 子句”。

【问题讨论】:

  • 错误1054,未知列是MySql错误,所以我添加了标签。
  • 修复您的架构。你应该规范你的成绩表,例如(id,from_user_id,for_user_id,grade_category,score)

标签: mysql sql join sql-update where-clause


【解决方案1】:

需要为区域表提供的值数量为 6(即ID | ID_from | ID_for | G1 | G2 | Area)。但您只提供 3 个(即 ID | 名称 | 区域)

您需要将源表中的所有列映射到目标表。

而且,看起来您正在尝试更新区域而不是插入。如果是这样的话

update grades 
set Area = (select area from users where users.id = grades.ID_for) 

可能会完成这项工作。如果您的意图是仅更新空值的区域,那么

update grades 
set Area = (select area from users where users.id = grades.ID_for) 
where area is null

【讨论】:

  • 我能说什么。由 OP 接受它作为答案:)
猜你喜欢
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 2015-10-27
相关资源
最近更新 更多