2

我有一张有 4 列的表,其中一列称为“订单”。“订单”不是自动递增的,但另一列“mapping_id”是自动递增的。其他列包括“quiz_id”和“question_id”。

表结构图

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

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

4

2 回答 2

5

类似以下的内容可能会满足您的需求。它将order根据question_id顺序分配递增值:

select @ordval := 0;
update thetable set `order` = 
        (select @ordval := @ordval + 1) order by question_id;
于 2013-10-18T22:06:22.190 回答
1

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

UPDATE yourTable
SET `order` = question_id - 1
于 2013-10-18T21:58:25.713 回答