2012-11-08 206 views
2

可能重复:
Mysql error 1093 - Can’t specify target table for update in FROM clauseSELECT查询的WHERE UPDATE查询的WHERE子句

在WHERE把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 
) 

和错误会显示是这样的:

“你不能指定FROM子句中更新目标表‘M’”

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

enter image description here

请任何人都可以帮我这个问题?

先谢谢您

+2

请直接发布代码而不是(难看的)截图。这也将有助于答复者复制并更正你所拥有的内容。 –

+1

你的图像太可爱了:D –

+2

这是它.... http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-from-条款 –

回答

5

其实你可以通过在一个子查询包裹它更新

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' 
+0

Yupyyyyyy ....谢谢亲爱的它完美的作品,因为我需要...谢谢兄弟.... – Hardik