代码之家  ›  专栏  ›  技术社区  ›  Daniel Bingham

在同一行的同一MySQL表中,将一个字段的值选择为另一个字段的值?

  •  0
  • Daniel Bingham  · 技术社区  · 15 年前

    $table = array();
    $table[0] = array ('id'=>0, 'f1'=>0, 'f2'=>1);
    $table[1] = array ('id'=>1, 'f1'=>0, 'f2'=>2);
    // etc...
    

    在这种情况下,我想做这样的事情:

    foreach($table as $row) {
        $row['f1'] = $row['f2'];
    }
    

    使用select和update的一个MySQL语句可以做到这一点吗?

    我在想象这样的事情:

    update myTable set f1=(select f2 from myTable where id=id);
    

    但我不认为那会起作用。。。我不知道怎么说第二个语句中的id等于第一个语句中的id。或者如何将其应用于表中的所有行。

    2 回复  |  直到 15 年前
        1
  •  4
  •   OMG Ponies    15 年前

    UPDATE mytable
       SET f1 = f2
    

    如果不指定WHERE子句,查询将应用于所有行。

        2
  •  2
  •   Alex Martelli    15 年前

    只是

    UPDATE myTable SET f1 = f2
    

    = 就同一行的现有列而言(通常是这样,例如, SET col = col + 1 ). 缺少一个 WHERE 子句表示更新将在所有行上进行,正如您所希望的那样。