UPDATE和LIMIT的使用不正确

时间:2015-03-31 08:49:22

标签: mysql

当我执行以下查询时:

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。如何解决这个问题?

1 个答案:

答案 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