1

我需要使用连接和限制来更新表。我构造了这个查询

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

我该如何解决这个问题?

4

3 回答 3

0

嘿,LIMIT 10从您的代码中删除

于 2013-10-28T11:09:46.120 回答
0

恐怕你不能这样做:

如果您阅读文档,它会说:

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

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

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

于 2013-10-28T11:14:12.107 回答
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;
于 2017-08-29T16:47:48.297 回答