当前位置: 首页 > 知识库问答 >
问题:

为什么我新创建的表是根据第一列排序的?

赵超
2023-03-14

我使用以下脚本创建了一个新表(基本上是将csv文件的数据加载到表中)-请注意,我在csv文件中的数据没有根据任何表列进行排序:

CREATE TABLE dynamic_se_down_13patients_dynamicranking
(
SE_ID  character(80) NOT NULL,
downreg_agk_se_ranking float,
downreg_bvi_se_ranking float,
downreg_cbk_se_ranking float,
downreg_dj_se_ranking float,
downreg_dkj_se_ranking float,
downreg_flv_se_ranking float,
downreg_ghw_se_ranking float,
downreg_gvz_se_ranking float,
downreg_idy_se_ranking float,
downreg_prw_se_ranking float,
downreg_spn_se_ranking float,
downreg_zgr_se_ranking float,
downreg_znk_se_ranking float,
CONSTRAINT SE_ID_Key PRIMARY KEY (SE_ID)
);

COPY dynamic_se_down_13patients_dynamicranking FROM 'G:\CarrollLab\Teena\Enhancers\EnhancerAnalysis\12_PreferentiallyANDExclusiveSuperEnhancersData\FigsAndTangentSuperEnhancers\DynamicSuperEnhancersValues\OutputFromPostgres\dynamic_se_down_13patientsHM.csv' WITH (FORMAT 'csv', DELIMITER E',', NULL '',HEADER);

我的表被加载到postgres上,但是当我打开它(查看数据...)时,表是按排序打开的。它是以这种方式基于它的第一列排序的(这里只显示第一列数据):

chr3:81872627-81874608@NM_000158@GBE1                                           
chr3:81886043-81891012@NM_000158@GBE1                                           
chr3:82119808-82144698@NM_000158@GBE1                                           
chr3:98270559-98285850@NM_005290@GPR15                                          
chr4:101067675-101092752@NM_145244@DDIT4L                                       
chr4:101159314-101161672@NM_145244@DDIT4L                                       
chr4:101931434-101943063@NM_000944@PPP3CA                                       
chr4:102676016-102684334@NM_001127507@BANK1                                     
chr4:103390927-103396488@NM_001165412@NFKB1    

我不确定为什么要对表格进行排序(!?)当我转到postgres控制栏上的“排序/筛选选项”时,我确实看到数据排序有我的第一个列名:“seu id”,排序顺序设置为升序。

如果我选择此项并单击“删除”和“确定”,则我的表格将恢复为“正常”,并最终以未排序的格式显示。有没有办法避免postgres所做的自动排序??我注意到我的其他表正在“正常”加载(=unsorted),但我不明白为什么在这种特定情况下我的表会被排序(我尝试过几次创建同一个表,每次都出现相同的问题)。谢谢

共有1个答案

杨高翰
2023-03-14

首先,您应该了解,您看到的视图与DBMS存储数据的方式无关。事实上,在你查看数据时,它似乎是被排序的,这是你用来查看数据的工具的产物。数据库服务器上数据的实际顺序与您看到的完全正交。

如果要使用其他工具连接到数据库,请执行

SELECT * 
FROM dynamic_se_down_13patients_dynamicranking 

... 查询然后,您可能会看到按插入顺序排列的行,或者按任意顺序排列的行(可能是由于DB服务器在插入行时或在表由真空操作之类的操作维护时执行了一些索引或哈希操作)。

所以这个问题实际上是关于你使用什么工具来查看你的PostgreSQL数据。

正如其他人所指出的,您应该添加一个SQLORDER BY子句来指定所需的排序/排序参数。

 类似资料:
  • 问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何

  • 创建一个Java方法,它将列表作为参数(MasterList)并返回另一个列表(ExpectedList)。 列表中每个对象都有两个变量: null 我试图实现的逻辑是:当有多个ID相同的对象时,只考虑计数较大的特定对象。表示ID:有3个对象,所以我只考虑(ID:abc122,Count:20),因为在ID:abc122的对象中Count更高。在结束时,方法应返回

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我已经由我的用户组成。在数据库查询之后,我正在检索。我想根据第一个ID列表订购此列表。可能不包括某些ID。番石榴对列表进行排序的方式是什么? 问题答案: 使用番石榴的完全“功能性”方式将与 您可以内联声明一个匿名函数,但是我想在一个单独的类中将我的函数声明为静态工厂方法,以获取更简洁的代码(Java的函数声明的详细信息隐藏在实用程序类中): 正如@Arne在评论中提到的那样,可以在Ja

  • 我有一个2010年和2019年的土地覆盖类型的数据框架。Pland代表总的土地覆盖价值,1等于该特定区域相对于ID的100%。这些计算是事先进行的,id代表每个几何形状。 我想执行一个函数,该函数生成另一个具有以下描述性名称的列,其中表示要替换的名称: 可复制代码: