Как сделать выборочное утверждение в обновлении? - PullRequest
2 голосов
/ 29 марта 2012

Мне нужно обновить таблицу, а предложение Where должно содержать последний (или максимальный) из определенного столбца, поэтому я сделал этот запрос:

UPDATE Orders
SET Ordermethod='Pickup'
WHERE orderid IN (
  SELECT MAX(orderid)
  FROM Orders);

Но по какой-то причине я не понимаю, mysql возвращает эту ошибку:

1093 - Вы не можете указать целевую таблицу 'Bestellingen' для обновления в предложении FROM

Я пробовал разные запросы, которые тоже не работают ... Может кто-нибудь помочь ??

Извините за дерьмовый английский

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Это ограничение MySQL. (Как указывает документация : «В настоящее время вы не можете обновить таблицу и выбрать одну и ту же таблицу в подзапросе.») Вы можете обойти ограничение, написав свой подзапрос как (SELECT * FROM (SELECT ...) t), так что MySQL создаст для вас временную таблицу:

UPDATE Orders
   SET Ordermethod='Pickup'
 WHERE orderid IN
        ( SELECT *
            FROM ( SELECT MAX(orderid)
                     FROM Orders
                 ) t
        )
;
0 голосов
/ 29 марта 2012

ОБНОВЛЕНИЕ Заказов УСТАНОВКА Ordermethod = 'Pickup' ГДЕ orderid IN (ВЫБРАТЬ МАКС. (Orderid) ОТ (ВЫБРАТЬ * ИЗ ЗАКАЗОВ) КАК c1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...