我有一个包含数字的数组。还有一个表格,有两列:id
和num
。
例如,数组是:(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
答案 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)