2013-08-24 6 views
0

Мне нужно обновить столбец PrebookCB в таблице с именем Workorders и установить его в 1, если столбец CustomerStatus в таблице Customers равен строке «Хорошо - Prebook». Я пробовал различные объединения и не мог заставить его работать. Кажется, это самое близкое. для каждого клиента будет несколько Рабочих Книг. Workorders есть столбец CustomerID, который соответствует основному индексу столбца Customers называемого CustomerIDСтолбец обновления Mysql на основе строки из другой таблицы

UPDATE Workorders 
     JOIN Customers 
     ON Workorders.CustomerID = Customers.CustomerID 
SET Workorders.PrebookCB = 1 
WHERE Customers.CustomerStatus = 'Good - Prebook' 

ответ

0

Попробуйте это,

Update Workorders 
set prebookCB = 1 
where CustomerID in (select customerid from customers 
where customeerstatus='Good-Prebook') 

В этом, UPDATE работает на вам нужна таблица. WHERE фильтрует записи для обновления, сравнивая идентификатор клиента, чтобы присутствовать в результате подзапроса. Подзапрос, далее фильтрует и выбирает идентификатор клиента из таблицы клиентов только тогда, когда у них есть статус apt.

Надеюсь, что это поможет объяснить!

+0

Как этот ответ отличается от ответа rakeshjain –

+0

Неверный аргумент 0 строк затронуты, но я знаю, что у 290 клиентов есть CustomerStatus из «Good-Prebook». Что еще может повлиять на это? – user2120901

+0

@PraveenPrasannan, я печатал, когда ответ был отправлен, так что не знал. – Rijul

2

Пробовали ли вы это

UPDATE Workorders SET PrebookCB = 1 
WHERE CustomerID IN 
    (SELECT CustomerID FROM Customers 
    WHERE CustomerStatus = 'Good - Prebook') 
+0

По какой-то причине затронуты 0 строк, но я знаю, что у 290 клиентов есть CustomerStatus из «Good - Prebook». Что еще может повлиять на это? – user2120901

+0

Можете ли вы просто запустить «SELECT CustomerID FROM Customers WHERE CustomerStatus =« Good - Prebook », чтобы проверить, что вы получаете эти 290 строк? – rakeshjain

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