使用另一个表中的数据更新行
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';
【讨论】:
以上是关于使用另一个表中的数据更新行的主要内容,如果未能解决你的问题,请参考以下文章