3

重複の可能性:
Mysql エラー 1093 - FROM 句で更新するターゲット テーブルを指定できません

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
)

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 に答える