其他列顺序超出预期

时间:2016-03-31 14:58:20

标签: sql database oracle oracle-sqldeveloper columnsorting

我的表格MPDAT_ALT包含R_IDCUSTOMERORDER_DATEORDER_ID列。 CUSTOMER有column_id' 1',R_ID' 2',ORDER_DATE' 3',ORDER_ID& #39; 4&#39 ;. 但数据显示为以下列顺序:R_IDCUSTOMERORDER_DATEORDER_ID。 这是为什么?我通过执行SQL语句创建了表MPDAT_ALT

CREATE TABLE MPDAT_ALT as (SELECT CUSTOMER, R_ID, ORDER_DATE, ORDER_ID from MPDAT) 

表格MPDAT首先包含列R_ID,然后是CUSTOMERORDER_DATEORDER_ID。 为什么没有MPDAT_ALT向我显示列ID暗示的列顺序数据?

1 个答案:

答案 0 :(得分:0)

总结评论:您在对象查看器中打开了一个现有的MPDAT_ALT表(通过从Connections窗口的Tables列表中选择它)。当该表选项卡打开时,您将从工作表中删除并重新创建该表。然后,您返回到打开的MPDAT_ALT选项卡,并刷新了“列”和“数据”选项卡。 “列”选项卡现在显示重新创建的表的新列顺序,但“数据”选项卡按照表的上一个版本的顺序显示列。

我可以重新创建它,似乎是由SQL Developer缓存它用来检索数据的查询。您可以使用完全不同的列名重新创建表并刷新“数据”选项卡,它仍将显示原始列标题。

由于在该选项卡中刷新只刷新数据而不刷新元数据,因此您需要:

  • 在“数据”选项卡处于活动状态时按F5;或
  • 右键单击Connections窗口中的Tables列表,然后从那里选择refresh;或
  • 关闭MPDAT_ALT表格窗口,然后从“表格”列表中重新打开它。

然后,“列和数据”选项卡将按照您期望的顺序显示列,如数据字典中所定义。

所有这些都在SQL Developer 4.1.3中工作。早期版本可能仍然显示旧订单,在这种情况下,您可能必须退出SQL Developer并重新启动它以查看更改。

如果在删除/重新创建表之前更改了“数据”选项卡(或persisted a find/highlight)中的列顺序或宽度,则SQL Developer会在“数据”选项卡中保留旧的列顺序。正如您所发现的,您可以右键单击任何列标题,然后选择“删除持久设置”,这将使用新的列顺序重新生成选项卡 ​​- 但显然您会丢失自定义的宽度或高亮显示,或者您设置的任何内容起来。