2010-12-31 13 views
5

ソートする必要があるSQLiteテーブルがあります。私はORDER BYコマンドに精通していますが、これは私が達成しようとしているものではありません。私はデータベース内でソートされたテーブル全体を必要とします。SQLiteテーブル全体をソート

説明:

私のテーブルは、テーブルの順序設定「ROWID」という列使用しています(キーを?)。私は "名前"と呼ばれる別の列でテーブルを並べ替える必要があります、次に、名前に従ってアルファベット順にROWID番号を再割り当てする必要があります。これはできますか?

ご協力いただければ幸いです!

ありがとうございます!

+0

それは、列 'rowid'に名前を付けることは良い考えではありません。これはすでにSQLiteで特別な意味を持っています。 – dan04

答えて

2

この問題はプライマリキーが何かを意味していることに関係していると思います。そのトラップは避けてください。データの行を一意に識別し、他の意味を持たない、任意に生成された主キーを選択します。さもなければ、意味を保つためにプライマリキーの値を変えたいと思う問題に結局行きます。あなたの代わりにデータを想定して、所望の順序でデータを取得するBY ORDERに頼らなければならない理由の良い説明については

は、そうでない場合は、主キーによって決定された配列に表示されますsimilar question

5

にクルアチャンの回答を参照してくださいあなたはそのようなあなたの元のテーブルを作成したと仮定すると:

CREATE TABLE my_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

あなたがそうのような別のソートテーブルを作成することができます。

CREATE TABLE my_ordered_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

INSERT INTO my_ordered_table (name, somedata) SELECT name,somedata FROM my_table ORDER BY name ;

そして、あなたは、その後のorignalテーブルを置換する場合:

DROP TABLE my_table ;

ALTER TABLE my_ordered_table RENAME TO my_table;

関連する問題