sqlite3 table
のreordering columns
では直感的ではないようです。少なくともsqlite manager
(firefox
)はこの機能をサポートしていません。たとえば、column2をcolumn3に移動し、column5をcolumn2に移動します。 sqlite管理ソフトウェアまたはスクリプトを使用して、sqliteテーブルの列を並べ替える方法はありますか?ありがとう。Sqlite3:テーブルの列を並べ替える方法は?
答えて
これは、どのDBMSでも簡単な作業ではありません。ほとんどの場合、必要な順序で新しいテーブルを作成し、あるテーブルからそのオーダーにデータを移動する必要があります。カラムを並べ替えるためのalter table文はないので、sqliteマネージャや他の場所では、同じテーブル内でこれを行う方法が見つかりません。
あなたが本当に順序を変更したい場合は、あなたができる:あなたがにtableAを持っていると仮定すると
:
:create table tableA(
col1 int,
col3 int,
col2 int);
あなたが列を持つテーブルBを作成することができますあなたが望むように並べ替え
create table tableB(
col1 int,
col2 int,
col3 int);
その後にtableAからTABLEBにデータを移動:
insert into tableB
SELECT col1,col2,col3
FROM tableA;
は、その後、元にtableAを削除し、TableAのにTableBの名前を変更:sqlite3の中
DROP table tableA;
ALTER TABLE tableB RENAME TO tableA;
あなたのSELECT文でしたいしかし、あなたは常にこのよう、列を注文することができます。
SELECT column1,column5,column2,column3,column4
FROM mytable
WHERE ...
あなたがテーブル自体に「注文」、それらをする必要はありません。
2つのテーブルのスキーマを一致させる必要があります。これにより、データを別のテーブルにコピーすることができます。 Sqlite3インポートは、コピー時に列と一致しません。ですから、たとえば、テキスト列の下に整数列があります。 – user938363
順序が問題を行います。概念的には、それはないはずですが、それがないことを証明するために、この実験を試してみてください。
CREATE TABLE SomeItems (identifier INTEGER PRIMARY KEY NOT NULL, filename TEXT NOT NULL, path TEXT NOT NULL, filesize INTEGER NOT NULL, thumbnail BLOB, pickedStatus INTEGER NOT NULL, deepScanStatus INTEGER NOT NULL, basicScanStatus INTEGER NOT NULL, frameQuanta INTEGER, tcFlag INTEGER, frameStart INTEGER, creationTime INTEGER);
は、サムネイルが小さいJPEGで約20,000レコードを持つテーブルを移入します。そして、このようなクエリのいくつか:
time sqlite3 Catalog.db 'select count(*) from SomeItems where filesize = 2;'
time sqlite3 Catalog.db 'select count(*) from SomeItems where basicscanstatus = 2;'
が返されたレコードの数は問題ではありません、私のマシン上で、最初のクエリが0m0.008s程度かかり、2番目のクエリは0m0.942sをとります。大きな違いは、その理由はBlobのためです。ファイルサイズはBlobの前であり、basicscanstatusは後です。
これでBlobを独自のテーブルに移動しました。私たちのアプリは満足しています。
これは非常に興味深いですが、それは全く質問に答えません。 – sapht
真。 Filipe Silvaの答えはその質問に答えます。私の答えはなぜこれを行う必要があるか、すなわち質問を検証するためのものでした。私たちはそれを実行しなければならず、順序を変更するための些細な方法もなかったので、2番目のテーブルを作成し、遅い列をそのテーブルに配置しました。これは私たちの業績に大きな違いをもたらしました。 – user8353681
- 1. SQLITEデータベースのテーブル列を並べ替える方法は?
- 2. Riakでデータを並べ替え/並べ替える方法は?
- 3. DataGrid列を並べ替える方法
- 4. テーブルの各列を並べ替え
- 5. Laravelで並べ替え結果を並べ替える方法
- 6. 列ごとのテーブルの並べ替え
- 7. 配列の並べ替え方法
- 8. C#使用方法パブリッククラスオブジェクトの並べ替え/並べ替え
- 9. 並べ替えの方法配列インデックスで並べ替えられたリスト
- 10. SQLite - テーブルの並べ替え
- 11. 並べ替えテーブルのクエリエラー
- 12. javascriptでテーブルのtbodiesをhtmlで並べ替える方法は?
- 13. C#で配列の列を並べ替える方法は?
- 14. Collections並べ替えて両方のArrayListを並べ替える
- 15. 並べ替え列
- 16. SQL Alchemyでテーブルを最適化/並べ替える方法は?
- 17. エクセル - 並べ替えテーブル
- 18. 列の並べ替えの矢印並べ替え
- 19. 値を別のテーブルの値で並べ替える方法
- 20. テーブルのSQLからの結果を並べ替える方法
- 21. グリッドビューの列をセルの色で並べ替える方法は?
- 22. 未定義列の並べ替え/並べ替え(LINQ \ Entity Framework)
- 23. 列の並べ替えと並べ替え
- 24. テーブル内の日付を並べ替える方法角度
- 25. データフレームの列を最後の列に並べ替える方法
- 26. 列のヘッダー名でExcelの列を並べ替える方法
- 27. 並べ替える列
- 28. 依存関係の2次元テーブルを並べ替え/並べ替える方法
- 29. データフレームを列の値で並べ替える方法は?
- 30. ブートストラップ3の列を並べ替える方法は?
上記のtabelBに挿入するコマンドについては、idも保持していますか? tableAと同じIDを持つ新しいテーブルにレコードが必要です。 – user938363
それらの列の1つがIDであれば、新しい表に移行されます。 –
@FilipeSilva ID列がAUTOINCREMENTに設定されている場合はどうなりますか? – pavitran