2013-07-19 3 views
0

Хорошо, я понимаю, что это может быть невероятно просто, но мой мозг сейчас заморожен. Нужно немного помочь с этим запросом. Давайте сломаем его. У меня есть две таблицы (за данном примере), и я хочу, чтобы обновить одну таблицу "UNDELIVERABLE" статусСложность с предложением WHERE IN для MySQL

Клиенты Таблица (tbl_customers):

+------------+-------------+ 
| customerID | custAcctNum | 
+------------+-------------+ 
|  1  | 100100121 | 
|  2  | 100100122 | 
|  3  | 10010| 
|  4  | 100100124 | 
|  5  | 100100125 | 
+------------+-------------+ 

Адрес Таблица (tbl_address):

+-----------+------------+---------------+ 
| addressID | customerID | undeliverable | 
+-----------+------------+---------------+ 
|  1  |  1  |  0  | 
|  2  |  2  |  0  | 
|  3  |  3  |  0  | 
|  4  |  4  |  0  | 
|  5  |  5  |  0  | 
+-----------+------------+---------------+ 

Dataset с "недоставленным" номером счета клиента (custAcctNum)

100100121, 100100123, 100100124 

И запрос будет обновлять таблицы адресов для этого

+-----------+------------+---------------+ 
| addressID | customerID | undeliverable | 
+-----------+------------+---------------+ 
|  1  |  1  |  1  | 
|  2  |  2  |  0  | 
|  3  |  3  |  1  | 
|  4  |  4  |  1  | 
|  5  |  5  |  0  | 
+-----------+------------+---------------+ 

Это вопрос, который я пытался использовать

UPDATE tbl_address 
SET undeliverable = 1 WHERE 
(SELECT custAcctNum FROM tbl_customers AS c 
INNER JOIN tbl_address AS a ON a.customerID = c.customerID) 
IN (100100121, 100100123, 100100124); 

Любые предложения? Благодаря! Синтаксис обновления многотабличных

ответ

2

Использовать в MySQL:

update tbl_Address t 
join custAcctNum c 
    on c.customerid = t.customerid 
set t.undeliverable = 1 
where c.custAcctNum in (100100121, 100100123, 100100124) 
+1

+1, но я исправил синтаксис, соответствующий синтаксис обновления нескольких таблиц в MySQL. Ср http://dev.mysql.com/doc/refman/5.6/en/update.html –

+0

Спасибо за законопроект и Йогендра! Это сработало с исправленным синтаксисом. – TehFoobar

2
UPDATE tbl_address 
SET (undeliverable = 1) 
WHERE customerID IN (
    SELECT customerID 
    FROM tbl_customers 
    WHERE custAcctNum IN (100100121, 100100123, 100100124) 
); 
Смежные вопросы