perl + MySQLで質問です。


レコードの順番を変える方法はどのようにしたらよいでしょう?

例えば、
りんご,apple
ライオン,lion
バッタ,batta
パソコン,pasokon

という順番で入っているものを
ライオン,lion
りんご,apple
バッタ,batta
パソコン,pasokon

というふうに順番を入れ替えるようなSQLってありますか?

回答の条件
  • 1人3回まで
  • 登録:2006/07/18 20:49:06
  • 終了:2006/07/20 18:38:05

回答(4件)

id:m-nisi No.1

m-nisi回答回数159ベストアンサー獲得回数32006/07/18 20:53:19

ポイント20pt

これは、今後データが増えていくものですか?

また、元のデータはどのような順で並んでいるのですか?

そして、並び替えたデータはどのような順ですか?

この3点を書いてくださると、教えられるかもしれません。

id:pipi_n

そうですね、情報が少なすぎました。

データは随時増えていきます。(上限は100件です)

一つ目のフィールドはユニークです。

基本的な並び順はレコードの後ろに追加していきます。

autoincrementはつけていません。

並び替えるデータは任意で何レコード目に入れるのか入力するようにしたいです。

これくらいの情報でわかりますでしょうか

2006/07/18 21:07:19
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912006/07/18 21:08:51

ポイント5pt

具体的な条件がでれば、また違った回答になるかもしれませんが、とりあえず、サンプルの後半の結果を出すための SQL でしたら、下記で出るかと思います。


SELECT japaneseName, englishName FROM tableDictionary ORDER BY CHAR_LENGTH( englishName),englishName;


tableDictionary というテーブルに、

日本語名のjapaneseName と

英語名のenglishName があると想定した例です。

id:pipi_n

すいません、説明不足でした。

文字数ではなく、任意の順番でした。

2006/07/19 10:13:14
id:t-ueno No.3

t-ueno回答回数113ベストアンサー獲得回数32006/07/18 22:31:10

ポイント34pt

1番のコメントを見る限り、並べる順番の条件は、「法則性はなく、任意に、好きな順番で」ということですね?

だとしたら、レコードに順番を表すフィールドを設けるのが一番ふつうなのではないでしょうか。

3番目のフィールドにそれを設けたとすると、


ライオン,lion,1

りんご,apple,2

バッタ,batta,3

パソコン,pasokon,4


とデータをセットして、「order by 3番目フィールド」って並べてやればよいですよね。

ライオンとりんごの間に新たに「バナナ」を挿入したい場合は、


ライオン,lion,1

バナナ,banana,2

りんご,apple,3

バッタ,batta,4

パソコン,pasokon,5


とデータをセットしなおすことで実現できます。

もしかして、フィールドの追加は反則かもしれませんが、ご要望を満たす(任意の好きな順に並べる)にはこれしかないですね。

データ挿入時の論理については、いろいろ、もっと効率の良い方法が考えられますが、たかだか100個単位のデータならば、これで十分でしょう。

id:pipi_n

なるほど。

やはり番号をふったやり方が一般的なのですね。

ただ、4番を1番に変更するときは全部の番号を入れ替えないといけないという手間はありますが

それくらいはしょうがないんですかね。

2006/07/19 10:12:32
id:toohigh No.4

toohigh回答回数291ベストアンサー獲得回数372006/07/18 23:11:19

ポイント31pt

MySQL(というかDBMS全般)の世界に、あまりレコードの順番、という概念を期待しないほうが良いかと思います。

質問されている方の期待する内容にもよりますが、並び順専用の id みたいなカラムを作ってそこに値を入れていく形が良いかと思います。

で、実際に値を SELECT などで取ってくるときに ORDER BY する、という感じですね。

id:pipi_n

確かにレコードの順番やフィールドの順番は意識しないのがDBMSだ、というのは聞いたことがあります。

やはり番号ですね。

1番から順に全部表示したいときは番号でソート(ORDER BY~ASC)すればいいんですよね。

2006/07/19 10:18:47

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません