我有一个包含4列的表,其中一列称为“order”。 “Order”不会自动递增,但是另一列“mapping_id”会自动递增。其他列包括“quiz_id”和“question_id”。
我想将“order”的所有值更改为与question_id字段相同的升序。我的应用程序仅根据此“订单”列进行排序,因此我可以重新排序的唯一方法是编辑此列中的值。
我想知道的是如何编写更新查询以将“order”的所有值更改为以递增的数字序列。我想只是将“order”的值与“question_id”的值相匹配,但是question_id从2开始而不是1,而“order”必须从1开始。感谢您提供任何帮助!
答案 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