MySQL - 根据连接表列值更新列值

标签 mysql join sql-update

我一直在阅读 SO 和其他网站,并遵循了一些示例;但是,我的 SQL 语句仍然没有按要求执行。

我有两张 table


          parts
============================
pmkParts    fnkManufacturer
----------------------------
   0          Penn-Union
   1          Schneider
   2         Telemecanique

         manufacturer   
===============================
Manufacturer    pmkManufacturer
-------------------------------
 Penn-Union          45
 Schneider           56
Telemecanique        12

我想把零件表改成

          parts
============================
pmkParts    fnkManufacturer
----------------------------
   0             45
   1             56
   2             12

这是我试过的 SQL 语句。

Update parts
SET parts.fnkManufacturer = (
   SELECT manufacturer.pmkManufacturer
   FROM manufacturer
   WHERE manufacturer.pmkManufacturer = parts.fnkManufacturer
   )

那是在更改正确的列,但它用“NULLS”而不是外键(制造商)填充它。我认为应该在某处加入一个连接,但我不确定在哪里。

有什么建议吗?

------------

编辑:答案:

这是有效的 SQL 语句。感谢 MarcB 的帮助。

Update parts
SET parts.fnkManufacturer = (
   SELECT manufacturer.pmkManufacturer
   FROM manufacturer
   WHERE manufacturer.Manufacturer= parts.fnkManufacturer
   )

最佳答案

尝试使用更新连接查询更改您的查询,如下所示。同样,您加入了错误的列,实际上您应该加入 manufacturer.Manufacturer 列。

Update parts p
JOIN manufacturer m ON m.Manufacturer = p.fnkManufacturer
SET p.fnkManufacturer = m.pmkManufacturer;

关于MySQL - 根据连接表列值更新列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273515/

相关文章:

postgresql - 为什么 PostgreSQL 抛出 "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions"

sql - 如何返回具有聚合列的连接表的第一个值

python - Pandas 中的 join 和 merge 有什么区别?

mysql - 使用连接表进行 sql 更新

php - 如何在 php 中将 2 个参数传递给 array_map 函数?

Mysql rank with join table,结果不正确

php - 显示列名

sql - 使用一对一的键快速合并表

sql - 如何在sqlite中预先存在的数据表的开头插入X行

mysql - 来自 MySQL DB 的 Ansible list