【发布时间】:2016-06-08 05:13:56
【问题描述】:
所以,如果不更改整个查询或将其拆分为单独的 SELECT/UPDATE 操作对,我似乎无法绕过这个 MySQL 限制:
UPDATE `animal`
LEFT JOIN `animalFriends`
ON (`animalFriends`.`animal_id_friend`=`animal`.`id`)
SET `animal`.`trainer_friend_name_latest`=
(
SELECT `trainer`.`name`
FROM `animalFitnessGroup`
LEFT JOIN `trainer`
ON (`animalFitnessGroup`.`trainer_id`=`trainer`.`id`)
WHERE `animalFitnessGroup`.`animal_id_firstMember`=`animal`.`id` OR
`animalFitnessGroup`.`animal_id_firstMember`=`animalFriends`.`animal_id_friend2`
ORDER BY `animalFitnessGroup`.`id` DESC
LIMIT 1
)
WHERE `animal`.`id`=123
这种查询会呈现错误:
您不能在 FROM 子句中指定目标表“动物”进行更新
虽然我确信这样做是有充分理由的,但由于查询的意图很明确,这有点令人沮丧。有简单的解决方法吗? UPDATE FROM 可以成为一个解决方案...而不将其重写为子查询 SELECT 操作或两个单独的操作? https://stackoverflow.com/a/37284940/963901
【问题讨论】: