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列の番号を付け直す理由がわかりません。ID列に設定して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 に答える