带加入和限制的Mysql更新

时间:2013-10-28 11:02:41

标签: mysql sql join

我需要使用join和limit更新表。我构建了这个查询

UPDATE table1
JOIN table2 AS b
ON table1.id = b.id
SET 
table1.username = b.post_username
WHERE b.post_username != ''
AND table1.username = ''
LIMIT 10

不幸的是我发现了错误:

Error Code: 1221
Incorrect usage of UPDATE and LIMIT

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

嘿只是从代码中删除LIMIT 10

答案 1 :(得分:0)

我担心你不能这样做:

如果您阅读documentation,则说:

  

如果没有WHERE子句,则更新所有行。如果是ORDER BY子句   如果指定,则按指定的顺序更新行。该   LIMIT子句限制了可以更新的行数。

     

对于多表语法,UPDATE更新table_references中指定的满足条件的每个表中的行。在这种情况下,   ORDER BY和LIMIT不能使用。

所以你不能在查询中这样做。

答案 2 :(得分:0)

您可以使用以下查询语法:

update work_to_do as target
   inner join (
      select w. client, work_unit
      from work_to_do as w
         inner join eligible_client as e on e.client = w.client
      where processor = 0
      order by priority desc
      limit 10
   ) as source on source.client = target.client
      and source.work_unit = target.work_unit
   set processor = @process_id;