2013-07-11 70 views
1

我有列的表 'lot_login_tracking':
lot_i_login_id是主鍵&汽車INC更新使用嵌套查詢

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) 

並出現錯誤:

ERROR 1093 (HY000): You can't specify target table 'lot_login_tracking' for update in FROM clause.

如何解決?

回答

1

的替代方法是使用加入,

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'