3

可能重复:
Mysql 错误 1093 - 无法在 FROM 子句中指定要更新的目标表

将 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' 进行更新”

我附上了错误显示的快照。

在此处输入图像描述

请问有人可以帮我解决这个问题吗?

先感谢您

4

2 回答 2

7

实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表

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'
于 2012-11-08T06:57:42.637 回答
1

在 MySQL 中,您不能修改在 SELECT 部分中使用的同一个表。此行为记录在:http ://dev.mysql.com/doc/refman/5.6/en/update.html

参考资料

https://stackoverflow.com/a/45498/1225190

于 2012-11-08T06:54:56.617 回答