2015-03-31 4 views
0

Когда я выполнить следующий запрос:Неправильное использование UPDATE и LIMIT

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 

мне нужно использовать лимит при использовании обновления соединения. Как решить эту проблему?

+1

возможно дубликат [MySQL - UPDATE запроса с LIMIT] (http://stackoverflow.com/questions/6289729/mysql-update-query-with-limit) – Shaeldon

+0

AFAIK, 'LIMIT' не используется в заявлении об обновлении. Я мог ошибаться. – asprin

ответ

3

Подумайте, что он не рекомендует использовать порядок/ограничение для инструкции обновления нескольких таблиц.

Я бы предложил попытаться выполнить обновление, где ключевое поле находится в результатах вспомогательного запроса, который возвращает ограниченный набор записей. Одна из проблем заключается в том, что MySQL не позволит вам обновлять таблицу, которая также находится в подзапросе, но вы обычно можете обойти это, имея 2-й содержащий подзапрос.

Что-то вроде этого: -

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 
Смежные вопросы