使用另一个表中的数据更新行

Posted

技术标签:

【中文标题】使用另一个表中的数据更新行【英文标题】:Update row with data from another table 【发布时间】:2019-05-21 20:41:35 【问题描述】:

我有一个包含以下表格的 mysql 数据库。

驱动表

  id    name    vehicleId
 -------------------------
   1     bob            1
   2     jim            1
   3     rob            2
   4     tim            2
   5     sue            3

车辆表

  id      model
 ---------------
   1      civic
   2       cr-v
   3      camry
   4    corolla

我希望能够使用车辆模型更新给定驾驶员的车辆。

我能够使用,

UPDATE driver, vehicle
SET vehicleId = vehicle.id
WHERE driver.name = "bob"
AND vehicle.model = "corolla";

但这似乎不是最佳/正确的解决方案。从我读过的内容来看,我似乎应该能够使用连接来做到这一点,但我没有任何运气使用这种方法。

基于联接的解决方案更好还是我的解决方案还可以?

提前致谢!

【问题讨论】:

【参考方案1】:

你的表述很好,虽然我更喜欢CROSS JOIN 而不是,

您也可以使用子查询来表达这一点:

UPDATE driver 
    SET vehicleId = (SELECT v.id FROM vehicle v WHERE v.model = 'corolla')
    WHERE name = 'bob';

【讨论】:

以上是关于使用另一个表中的数据更新行的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 删除表中的重复行并使用另一个表中的值更新行

postgres,使用另一个表中的数据进行批量更新

使用其他行的数据更新同一表中的行 SQL

更新触发器后不更新 SQL 表中的特定数据行

SQL SERVER如何更新另一个表中存在的表中的所有行

MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表