1

列を持つテーブル「lot_login_tracking」があります:
lot_i_login_idは主キーであり、自動インク

lot_i_login_id        lot_i_user_id lot_d_login_stamp       lot_d_logout_stamp
1                     1296          2013-07-11 09:18:32     NULL
2                     1296          2013-07-11 09:55:38     NULL
3                     1296          2013-07-11 09:57:38     NULL

ユーザーがログアウトするときに、次のクエリを実行しています。

UPDATE lot_login_tracking SET lot_d_logout_stamp = "2013-07-11 19:28:21" 
WHERE lot_i_login_id = ( SELECT max(lot_i_login_id) 
                         FROM lot_login_tracking WHERE lot_i_user_id = 1296)

そしてエラーが発生します:

エラー 1093 (HY000): FROM 句での更新にターゲット テーブル 'lot_login_tracking' を指定できません。

それを解決する方法は?

4

1 に答える 1

1

代替手段は、join を使用することです。

UPDATE  lot_login_tracking a
        INNER JOIN
        (
            SELECT  max(lot_i_login_id) m
            FROM    lot_login_tracking 
            WHERE   lot_i_user_id = 1296
        ) b ON a.lot_i_login_id = b.m
SET     a.lot_d_logout_stamp = '2013-07-11 19:28:21'
于 2013-07-11T14:27:56.770 に答える