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

时间:2019-05-21 20:41:36

标签: mysql sql

我有一个带有下表的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 个答案:

答案 0 :(得分:1)

尽管我更喜欢CROSS JOIN,,但是您的表述还不错。

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

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