Mysql 如何使用两个链接表编写相对简单的更新查询

Mysql 如何使用两个链接表编写相对简单的更新查询,mysql,sql,Mysql,Sql,我有两张桌子、两辆车和两份订单 两者都有一个里程列,但订单表里程列在大多数行上为空 我想更新订单。汽车里程。里程。它们由Vrm列链接 有人能帮我解答这个问题吗 UPDATE orders SET Mileage = (SELECT * FROM `orders` JOIN cars ON orders.Vrm = cars.Vrm WHERE orders.mileage = '') 在UPDATE的FROM子句中使用JOIN,而不是尝试使用子查询。否则,你的想法基本上是正确的 UDPATE

我有两张桌子、两辆车和两份订单

两者都有一个里程列,但订单表里程列在大多数行上为空

我想更新订单。汽车里程。里程。它们由Vrm列链接

有人能帮我解答这个问题吗

UPDATE orders
SET Mileage = (SELECT *
FROM `orders`
JOIN cars ON orders.Vrm = cars.Vrm
WHERE orders.mileage = '')

UPDATE
FROM
子句中使用
JOIN
,而不是尝试使用子查询。否则,你的想法基本上是正确的

UDPATE
  orders
  JOIN CARS ON orders.Vrm = cars.VRM
SET orders.Mileage = cars.mileage
WHERE orders.mileage = ''
问题1:

UPDATE orders
SET Mileage = (SELECT c.mileage
               FROM cars c 
               WHERE orders.Vrm = c.Vrm)
WHERE o.mileage = ''
问题2:

UPDATE orders o
JOIN cars c ON o.Vrm = c.Vrm 
SET o.Mileage = c.mileage
WHERE o.mileage = ''
一些

根据,您应该使用以下方法:

UPDATE orders, cars
SET orders.Mileage = cars.mileage
WHERE orders.Vrm = cars.Vrm AND orders.mileage = ''

谢谢我试图在我的机器(wamp)上用phpmyadmin运行它,它只是说永远加载!我能看出瓶颈吗?@JamesWilson我在上的子句中有一个输入错误,但那应该会彻底消失。您正在更新多少行?此外,我还添加了
SET orders.milene=cars.mileate
,而它的开头是
SET milenery=cars.milenery
,没有
orders
标识符。是的,我修复了所有这些。有35行需要更新,但没有里程数。这一行有73000行orders@JamesWilson执行
选择此版本的
以查看需要多长时间<代码>选择订单。*,汽车。*从订单加入订单上的汽车。Vrm=cars.Vrm WHERE orders.miliege=''
任何瓶颈都可能出现在
订单中。里程
缺少索引,或者
orders.Vrm,cars.Vrm
缺少索引。尽管如此,73k并不是那么多行。显示第0-29行(总共35行,查询耗时4.3036秒)