可能重复:
Mysql error 1093 - Can’t specify target table for update in FROM clause
将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。
我的查询是这样的:
UPDATE `subschedulesseats` m
SET m.studentid='1'
WHERE m.`seatid`= (
SELECT h.`seatid`
FROM `subschedulesseats` h
WHERE h.`sessiontime`='02:30~04:00'
ORDER BY h.`seatid` ASC
LIMIT 2,1
)
AND错误将显示如下:
“您无法在FROM子句”
中为更新指定目标表'm'我附上了错误显示的快照。
请有人帮我解决这个问题吗?
提前感谢
答案 0 :(得分:6)
实际上你可以通过将它包装在子查询中来更新它(从而为结果创建临时表)
UPDATE `subschedulesseats` m
SET m.studentid='1'
WHERE m.`seatid`=
(
SELECT seatID
FROM
(
SELECT h.`seatid`
FROM `subschedulesseats` h
WHERE h.`sessiontime`='02:30~04:00'
ORDER BY h.`seatid` ASC
LIMIT 2,1
) s
)
或使用JOIN
UPDATE `subschedulesseats` m
INNER JOIN
(
SELECT seatID
FROM
(
SELECT h.`seatid`
FROM `subschedulesseats` h
WHERE h.`sessiontime`='02:30~04:00'
ORDER BY h.`seatid` ASC
LIMIT 2,1
) s
) t ON m.seatID = t.seatID
SET m.studentid = '1'
答案 1 :(得分:1)
在MySQL中,您无法修改在SELECT部分中使用的同一个表。 此行为记录在:http://dev.mysql.com/doc/refman/5.6/en/update.html
参考