2014-06-14 29 views
0

我想用INNER JOIN更新多達8000行。更新內部加入限制?

我得到一個錯誤:

Incorrect usage of UPDATE and LIMIT

它不工作,如果我不包括INNER JOIN

UPDATE `loop` 
INNER JOIN data ON data.number = loop.number 
SET robot = 1 
WHERE `done` != 1 AND `robot` = 0 
limit 8000 

我如何得到這個工作? SQL示例很棒。

+0

可能的重複http://stackoverflow.com/questions/9080403/update-with-order-by-and-limit-not-working-in-mysql。顯然限制只能用於SELECT語句 –

+0

考慮提供適當的DDL(和/或sqlfiddle)與期望的結果集合 – Strawberry

+0

@CircularReference限制可以用於更新語句 – Strawberry

回答

0

我假設你的表有一個主鍵,我將在這裏調用數字。然後在一個臨時表中的第8000號複製並加入您的更新到該表:

create temporary table if not exists PKs (number integer); 
insert into PKs select number from loop where done != 1 and robot = 0 limit 8000; 
update data inner join PKs on data.number = PKs.number set data.robot = 1; 
drop table PKs; 

也許我的使用情況做了和機器人領域是不正確的,但是從你的說法,目前還不清楚它們屬於哪個表。