UPDATE查询的WHERE子句中的SELECT查询
UPDATE查询的WHERE子句中的SELECT查询
这个问题已经有了答案:
可能是重复问题:
Mysql error 1093 - Can’t specify target table for update in FROM clause
在UPDATE查询的WHERE子句中放置SELECT查询时,会出现错误。
我的查询语句如下:
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 )
错误信息将显示如下:
\"You can\'t specify target table \'m\' for update in FROM clause\"
我已经附上了错误显示的快照。
请有人能帮我解决这个问题吗?
提前谢谢您
admin 更改状态以发布 2023年5月21日
在MySQL中,您不能修改用于SELECT部分的同一张表。
此行为在以下文档中有所说明:http://dev.mysql.com/doc/refman/5.6/en/update.html
实际上,您可以通过将其包装在子查询中(因此创建结果的临时表)来更新它
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'