mysql - 如何通过比较两个表中的列来填充外键

标签 mysql sql database

表 A 是从 CSV 文件导入的项目 list 。电子表格包括一列库存元素(即牙刷、浴室)的位置。

表 B 是表 A 中所有不同位置的列表。

我现在想用表 B 中的 ID 更新表 A,在表 A 的新列中设置为外键。我需要表 A 中的每条记录都有一个 location_id,其中 location 的文本与表 B 中的 as_entered 匹配。

我试过:

UPDATE imported_data_copy
SET imported_data_copy.location_id=locations.id
WHERE locations.as_entered LIKE imported_data_copy.location;

我得到的错误是:

#1054 - Unknown column 'locations.as_entered' in 'where clause' 

事实上,位置表中有一个 as_entered 列。

我做错了什么?

最佳答案

问题原来是我没有在 UPDATE 子句中包含 locations 表。正确的语法结果是:

UPDATE imported_data_copy,locations
SET imported_data_copy.location_id=locations.id 
WHERE imported_data_copy.location LIKE locations.as_entered;

很高兴我在这里问了,因为我仍然会遇到 WHERE 子句的问题。

关于mysql - 如何通过比较两个表中的列来填充外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34681363/

相关文章:

mysql - 将 RIGHT JOIN 与 COUNT 相结合

c# - RhinoETL - 加入两个表作为输入,在输出时写入两个表

sql - 连接4张 table

linux - 克隆 oracle 10g(linux5 32 位)到 10g(linux 6.4 64 位)

python - 从 python 访问 MySQL 数据库

java - 使 UTF-8 可用于使用 Spring 将阿拉伯语数据放入 Mysql DB

mysql - 缺少“events_statements_summary_by_digest 表”

MySQL:如何获得每个分组的 x 个结果

c# - DBcontext.Database.Log : executable sql query

sql - 在 SQL 数据库中的 WHERE 条件下使用的每一列上创建索引是一种好习惯吗?