更新表中的多个行以选择ID

时间:2014-02-16 13:27:21

标签: mysql sql

我有一个表'table1'需要更新。 我有一个查询将提取需要更新的必需ID。 e.g。

+------+
| 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]

如何更新表格中我从其他查询中提取的id数量?

*注: 使用MySQL

我从中提取id的子查询涉及'table1'和mysql document 它说, 目前,您无法更新表并从子查询中的同一个表中进行选择。

4 个答案:

答案 0 :(得分:1)

在MySQL中,最有效的方法可能是使用join

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

如果选择id的查询实际使用table1,这也会有用。

答案 1 :(得分:0)

使用

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

答案 2 :(得分:0)

尝试

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

答案 3 :(得分:0)

有效的方法如下:

  1. CREATE TABLE ids_table AS(SOME-QUERY-HERE-THAT-WILL-SPIT-REQD-IDS);
  2. UPDATE table1 SET col1 = 0其中id in(SELECT id from ids_table);
  3. DROP TABLE ids_table;
  4. 这个想法似乎不是一个好习惯,但它确实有效。