我有一个带有下表的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";
但这似乎不是最佳/正确的解决方案。从我阅读的内容来看,似乎应该可以使用联接执行此操作,但是使用该方法没有任何运气。
基于联接的解决方案更好吗?还是我的解决方案还可以?
谢谢!
答案 0 :(得分:1)
尽管我更喜欢CROSS JOIN
比,
,但是您的表述还不错。
您还可以使用子查询来表达这一点:
UPDATE driver
SET vehicleId = (SELECT v.id FROM vehicle v WHERE v.model = 'corolla')
WHERE name = 'bob';