2016-02-03 46 views
0
当我看着我的大桌子的sqlite的文件,使用SQLite的浏览器,如Firefox插件 SQLite ManagerSQLite Browser

,我看到根据自己除了表中的序列列显示(我一直在添加新列在一个循环中)。sqlite howto排序列?

A J D B 
--- --- --- --- 
.. .. .. .. 

这是一个视觉干扰,因为该表是非常大的有很多很多列,并用于调试的目的,我需要目视检查相邻列。如何对表格进行排序以便将列排序,如:

A B J D 
--- --- --- --- 
.. .. .. .. 

谢谢。

回答

1

SQLite没有内置的机制来重新排列表的列。

你不得不重新创建表:

CREATE TABLE new_MyTable(A, B, J, D [...]); 
INSERT INTO new_MyTable SELECT A, B, J, D FROM MyTable; 
DROP TABLE MyTable; 
ALTER TABLE new_MyTable RENAME TO MyTable; 
+0

这两个答案都是伟大的!但我终于使用了这个。我需要做很多字符串操作(使用python),以便能够自动检索长列表名称,然后对它们进行排序。使用[本文](http://stackoverflow.com/a/685212/5177935)和[本文](http://stackoverflow.com/a/7991230/5177935)的有价值的提示。 – xaratustra

1

您可以创建一个的DebugView与重新排序,请你列...

CREATE TABLE ChorleyHandford (IMAGE_REF, DATE, LOCATION, NUMBER); 
INSERT INTO "ChorleyHandford" VALUES('A10006','16/10/1990','RATCLIFFE POWER STATION CASTLE DONNINGTON POWER STATION','27'); 
INSERT INTO "ChorleyHandford" VALUES('A10017','25/10/1990','BROMLEY PARKS','17'); 
INSERT INTO "ChorleyHandford" VALUES('A10018','25/10/1990','CROSSWAYS BUSINESS PARK DARTFORD CROSSING BRIDGE CONSTRUCTION','20'); 
INSERT INTO "ChorleyHandford" VALUES('A10022','25/10/1990','THURROCK LAKESIDE','11'); 
INSERT INTO "ChorleyHandford" VALUES('A10057','01/11/1990','CLANDON REGIS SITE','6'); 

看你拥有的一切:

select * from CHORLEYHANDFORD; 

A10006|16/10/1990|RATCLIFFE POWER STATION CASTLE DONNINGTON POWER STATION|27 
A10017|25/10/1990|BROMLEY PARKS|17 
A10018|25/10/1990|CROSSWAYS BUSINESS PARK DARTFORD CROSSING BRIDGE CONSTRUCTION|20 
A10022|25/10/1990|THURROCK LAKESIDE|11 
A10057|01/11/1990|CLANDON REGIS SITE|6 

创建一个重新排序的视图,看看它看起来没有女:

create view dbgview as select NUMBER, LOCATION, DATE, IMAGE_REF FROM CHORLEYHANDFORD; 
select * from dbgview; 

27|RATCLIFFE POWER STATION CASTLE DONNINGTON POWER STATION|16/10/1990|A10006 
17|BROMLEY PARKS|25/10/1990|A10017 
20|CROSSWAYS BUSINESS PARK DARTFORD CROSSING BRIDGE CONSTRUCTION|25/10/1990|A10018 
11|THURROCK LAKESIDE|25/10/1990|A10022 
6|CLANDON REGIS SITE|01/11/1990|A10057