MySQL更新增加(非自动增量)列值

时间:2013-10-18 21:54:50

标签: mysql sorting

我有一个包含4列的表,其中一列称为“order”。 “Order”不会自动递增,但是另一列“mapping_id”会自动递增。其他列包括“quiz_id”和“question_id”。

Image of Table Structure

我想将“order”的所有值更改为与question_id字段相同的升序。我的应用程序仅根据此“订单”列进行排序,因此我可以重新排序的唯一方法是编辑此列中的值。

我想知道的是如何编写更新查询以将“order”的所有值更改为以递增的数字序列。我想只是将“order”的值与“question_id”的值相匹配,但是question_id从2开始而不是1,而“order”必须从1开始。感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:5)

以下内容可能会满足您的需求。它会根据order排序将增量值分配给question_id

select @ordval := 0;
update thetable set `order` = 
        (select @ordval := @ordval + 1) order by question_id;

答案 1 :(得分:1)

您可以设置order = question_id -1。这样它将从1开始。如果你在question_id中有洞,你可能会得到一些漏洞,但是如果你没有洞,这就可以解决问题。

UPDATE yourTable
SET `order` = question_id - 1