Oracle提取列名称不会每次都以相同的顺序检索结果

时间:2016-06-23 11:27:57

标签: sql oracle

因此,我使用以下SQL命令来获取表的所有列的名称,但我也希望它们按创建顺序返回,例如:

create table X{
  name varchar(255),
  number varchar(255),
  something varchar(255))

我希望返回列表是:name - number - something;但我一直得到不同的结果。有时按顺序,有时则相反。我喜欢按照创作顺序检索的命令,或者相反,我不想要"排序"按字母顺序排列。这是我使用的命令:

SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'X' 

3 个答案:

答案 0 :(得分:2)

如果你想确定你可以使用的订单

  

COLUMN_ID创建的列的序列号

SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'X'
ORDER BY column_id

答案 1 :(得分:1)

你的问题是你不想要"排序"。表在关系模型中定义为无序记录集。如果您希望按特定顺序使用它们,则必须指定ORDER BY子句。没有ORDER BY,数据库会以任何方便的顺序返回记录。

如果您想知道创建顺序,则需要在表格的列中存储创建时间的日期时间值。然后,当您从表中检索数据时,您必须按该值进行ORDER BY。

您也可以尝试使用SEQUENCE值而不是日期时间,但这些值可能会或可能不会与记录搅拌一起使用。 (我对Oracle SEQUENCEs的经验有限。)即便如此,你仍然需要一个ORDER BY。

答案 2 :(得分:0)

SELECT column_name
FROM USER_TAB_COLUMNS
WHERE table_name = 'X' 
ORDER BY COLUMN_ID