2013-06-13 4 views
0

Мне удалось написать запрос, который отбрасывает заказы, которые не имеют элементов в отдельной таблице. Теперь я хотел бы обновить xxx_orders на основе возвращенного набора записей. Можно ли это сделать в одном запросе?Как я могу изменить этот оператор SELECT в оператор UPDATE?

SELECT Orders.OrderNumber, 
     Orders.CustomerNumber, 
     AffiliateCode 
FROM xxx_orders AS Orders 
     LEFT OUTER JOIN xxx_items AS Items 
     ON Orders.OrderNumber = Items.OrderNumber 
WHERE DATEDIFF(NOW(), OrderDate) >= 14 
     AND Orders.Product = 'HOUSEHOLD' 
     AND STATUS = 'BOOKING' 
     AND Completed = 1 
     AND Items.Id IS NULL 
ORDER BY OrderDate DESC 
+0

Вы ищете что-то вроде этого? http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server/2334741#2334741 –

+0

Какие ценности вы собираетесь обновлять? –

+0

Orders.CancelledReason = 'Истекает' - спасибо! –

ответ

1

Базовый синтаксис для обновления с помощью объединения в MySQL будет выглядеть следующим образом:

UPDATE xxx_orders AS Orders 
LEFT OUTER JOIN xxx_items AS Items 
     ON Orders.OrderNumber = Items.OrderNumber 
SET Orders.CancelledReason = 'Expired' 
WHERE DATEDIFF(NOW(), OrderDate) >= 14 
     AND Orders.Product = 'HOUSEHOLD' 
     AND STATUS = 'BOOKING' 
     AND Completed = 1 
     AND Items.Id IS NULL 

Edit: SET предшествует WHERE

+0

Спасибо! Когда я выбираю, я получаю 135 строк, когда я сделал обновление, это было 163 - это должно быть проблемой. Я не вижу, где будет разница? –

+0

Это странно, попытайтесь изолировать одну из 28 «лишних» строк и посмотреть, есть ли причина, по которой она не должна обновляться, похоже, что я скопировал ваши критерии правильно. –

+0

Извините, моя ошибка. Я добавил еще один JOIN для выбора, но не обновление! благодаря –

Смежные вопросы