我需要使用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
我该如何解决这个问题?
答案 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;