2014-02-16 6 views
0

У меня есть таблица 'table1', которую необходимо обновить. У меня есть запрос, который будет извлекать требуемый идентификатор, который необходимо обновить. , например.Обновление нескольких строк в таблице для выбранных идентификаторов

+------+ 
| id  | 
+------+ 
| 2 | 
+------+ 
| 3 | 
+------+ 
| 4 | 
+------+ 
| 7 | 
+------+ 
| 8 | 
+------+ 

Я попытался

UPDATE table1 set col1=0 where id=**query that lists id** [Didn't worked] 
UPDATE table1 set col1=0 where id in **query that lists id** [Didn't worked] 

Как я могу обновить таблицу для числа идентификаторов, которые я извлек из другого запроса?

* Примечание: Использования MySQL

Также подзапрос, из которого я извлек идентификаторы включает «table1» и от mysql document Он говорит, В настоящее время вы не можете обновить таблицу и выбрать из тех же таблиц в подзапрос.

ответ

0

использование

update table1 set col1 = 0 where id in (select id from tablen) 
0

Попробуй как

UPDATE table1 set col1=0 where id in (select id from <someothertable>) 
1

В MySQL, наиболее эффективным способом является, вероятно, использовать join:

UPDATE table1 toupdate join 
     (select id 
     from <someothertable> 
     ) sot 
     on toupdate.id = sot.id 
    set toupdate.col1 = 0; 

Это также будет работать, если запрос, выбирает id. s фактически использует table1.

0

То, что работало следующим образом:

  1. CREATE TABLE AS ids_table (НЕКОТОРЫЙ-QUERY-ТУТ-ТО-ВОЛЯ-КОС-REQD-IDS);
  2. UPDATE table1 SET col1 = 0 где id in (SELECT id из ids_table);
  3. DROP TABLE ids_table;

Идея не может показаться хорошей практикой, но она сработала.

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