使用数组更新ORDER BY查询

时间:2015-03-04 17:59:35

标签: php mysql

我有一个包含数字的数组。还有一个表格,有两列:idnum

例如,数组是:(2, 7, 1, 0)

我想通过id(ORDER BY ID DESC)订购表,并按此顺序更新num值,并使用数组元素。

所以顺序中的第一个元素num值应该是2,第二个7等等......

是否可以仅使用mySQL,或者我必须在PHP中管理它?


示例:

表:

id | num
--------
 1 | 0
 5 | 0
 6 | 0
 11| 0

数组:(5, 9, 10, -20)

查询后的表格:

id | num
--------
 1 | 5
 5 | 9
 6 | 10
 11|-20

3 个答案:

答案 0 :(得分:1)

最好使用PHP逐行更新。

答案 1 :(得分:1)

简单来说,你可以这样做:

$array = array(5,9,10 -20);
$i = 0;
$q = 'select id from `table` order by id desc limit ' . count($array);
// use some sql magic here - PDO or mysqli to get results
while ($row = $sql_result->fetch()) {
    $new_value = $array[$i];
    $id = $row['id'];
    $q = 'update `table` set `num` = ' . $new_value . ' where `id` = ' . $id;
    // more sql magic here. with prepared statements etc
    $i++;
    // and increase $i to get next array value
}

答案 2 :(得分:1)

SET @a=0;
UPDATE table1
LEFT JOIN (
  SELECT @a:=@a+1 as i,
    id
  FROM table1
  ORDER BY id
) as t
ON table1.id = t.id
SET table1.num= ELT(t.i, 5, 9, 10, -20)