当我执行以下查询时:
UPDATE `table1`
INNER JOIN Address ON Address.Mobile = table1.number
LEFT JOIN tps ON tps.number = table1.number
SET table1.export = '2015-03-31'
WHERE Address.Surname != '' and tps.number is null AND table1.export = '0000-00-00'
limit 100000
我收到错误:
Incorrect usage of UPDATE and LIMIT
使用Update join时我需要使用Limit。如何解决这个问题?
答案 0 :(得分:3)
认为它反对在多表更新语句中使用顺序/限制。
我建议尝试进行更新,其中关键字段位于返回有限记录集的子查询的结果中。这里的一个问题是MySQL不允许你更新同样在子查询中的表,但你通常可以通过第二个包含子查询来解决这个问题。
这样的事情: -
UPDATE table1
SET table1.export = '2015-03-31'
WHERE table1.number IN
(
SELECT number
FROM
(
SELECT table1.number
FROM `table1`
INNER JOIN Address ON Address.Mobile = table1.number
LEFT JOIN tps ON tps.number = table1.number
WHERE Address.Surname != '' and tps.number is null AND table1.export = '0000-00-00'
limit 100000
) sub1
) sub2