0

我有一个 5 列的表(列是 id、answer、weight、quiz_id 和 question_id),我想按 question_id 对其进行排序,然后按 weihgt 排序,然后我想根据这种双重排序递增地重新编号 id 列。在 mysql 中是否有可能(我正在使用 phpmyadmin)?

谢谢

就像是:

SELECT 
   @curRow := @curRow + 1 AS id,
   T.Answer, T.Weight, T.Quiz_Id, T.Question_Id
FROM wp_wpss_Answers T
   JOIN    (SELECT @curRow := 0) r
ORDER BY QuestioN_Id, Weight
LIMIT 0 , 1000
4

1 回答 1

0

假设您只想在查询中显示行号,然后使用如下内容:

SELECT 
   @curRow := @curRow + 1 AS RowNumber,
   T.Answer, T.Weight, T.Quiz_Id, T.Question_Id, T.Id
FROM YourTable T
   JOIN    (SELECT @curRow := 0) r
ORDER BY QuestioN_Id, Weight

如果您想更新您的 ID,您可以使用上述方法,但我会问您为什么要这样做?我看不出有任何理由对您的 ID 列重新编号——将其设置为 Identity 并让 MySQL 处理它。

但是,要更新您的 Id 列,请尝试以下操作:

UPDATE YourTable t
  JOIN (SELECT 
       @curRow := @curRow + 1 AS RowNumber,
       T.Answer, T.Weight, T.Quiz_Id, T.Question_Id, T.Id
    FROM YourTable T
       JOIN    (SELECT @curRow := 0) r
    ORDER BY QuestioN_Id, Weight) T2 ON T.Id = T2.Id
SET t.Id = T2.RowNumber

这是小提琴

但是你真的应该重新考虑这种方法。

祝你好运。

于 2013-02-04T21:00:13.583 回答