Mysql 如何使用两个链接表编写相对简单的更新查询
我有两张桌子、两辆车和两份订单 两者都有一个里程列,但订单表里程列在大多数行上为空 我想更新订单。汽车里程。里程。它们由Vrm列链接 有人能帮我解答这个问题吗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
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秒)