レコードの順番を変える方法はどのようにしたらよいでしょう?
例えば、
りんご,apple
ライオン,lion
バッタ,batta
パソコン,pasokon
という順番で入っているものを
ライオン,lion
りんご,apple
バッタ,batta
パソコン,pasokon
というふうに順番を入れ替えるようなSQLってありますか?
これは、今後データが増えていくものですか?
また、元のデータはどのような順で並んでいるのですか?
そして、並び替えたデータはどのような順ですか?
この3点を書いてくださると、教えられるかもしれません。
具体的な条件がでれば、また違った回答になるかもしれませんが、とりあえず、サンプルの後半の結果を出すための SQL でしたら、下記で出るかと思います。
SELECT japaneseName, englishName FROM tableDictionary ORDER BY CHAR_LENGTH( englishName),englishName;
tableDictionary というテーブルに、
日本語名のjapaneseName と
英語名のenglishName があると想定した例です。
すいません、説明不足でした。
文字数ではなく、任意の順番でした。
1番のコメントを見る限り、並べる順番の条件は、「法則性はなく、任意に、好きな順番で」ということですね?
だとしたら、レコードに順番を表すフィールドを設けるのが一番ふつうなのではないでしょうか。
3番目のフィールドにそれを設けたとすると、
ライオン,lion,1
りんご,apple,2
バッタ,batta,3
パソコン,pasokon,4
とデータをセットして、「order by 3番目フィールド」って並べてやればよいですよね。
ライオンとりんごの間に新たに「バナナ」を挿入したい場合は、
ライオン,lion,1
バナナ,banana,2
りんご,apple,3
バッタ,batta,4
パソコン,pasokon,5
とデータをセットしなおすことで実現できます。
もしかして、フィールドの追加は反則かもしれませんが、ご要望を満たす(任意の好きな順に並べる)にはこれしかないですね。
データ挿入時の論理については、いろいろ、もっと効率の良い方法が考えられますが、たかだか100個単位のデータならば、これで十分でしょう。
なるほど。
やはり番号をふったやり方が一般的なのですね。
ただ、4番を1番に変更するときは全部の番号を入れ替えないといけないという手間はありますが
それくらいはしょうがないんですかね。
MySQL(というかDBMS全般)の世界に、あまりレコードの順番、という概念を期待しないほうが良いかと思います。
質問されている方の期待する内容にもよりますが、並び順専用の id みたいなカラムを作ってそこに値を入れていく形が良いかと思います。
で、実際に値を SELECT などで取ってくるときに ORDER BY する、という感じですね。
確かにレコードの順番やフィールドの順番は意識しないのがDBMSだ、というのは聞いたことがあります。
やはり番号ですね。
1番から順に全部表示したいときは番号でソート(ORDER BY~ASC)すればいいんですよね。
そうですね、情報が少なすぎました。
データは随時増えていきます。(上限は100件です)
一つ目のフィールドはユニークです。
基本的な並び順はレコードの後ろに追加していきます。
autoincrementはつけていません。
並び替えるデータは任意で何レコード目に入れるのか入力するようにしたいです。
これくらいの情報でわかりますでしょうか