与预期不同的列顺序

Other column order than expected

我得到了一个 tables MPDAT_ALT,其中包含 R_IDCUSTOMERORDER_DATEORDER_ID 列。 CUSTOMER 有 column_id '1'、R_ID '2'、ORDER_DATE '3'、ORDER_ID '4'。 但数据以下列顺序显示:R_IDCUSTOMERORDER_DATEORDER_ID。 这是为什么?我通过执行 SQL 语句创建了 table MPDAT_ALT

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

table MPDAT 首先有列 R_ID,然后是 CUSTOMERORDER_DATEORDER_ID。 为什么 MPDAT_ALT 不按列 ID 暗示的列顺序向我显示数据?

根据评论总结:您有一个现有的 MPDAT_ALT table,您已在 object 查看器中打开它(通过从连接 window 的表中选择它列表)。当 table 选项卡打开时,您从工作表中删除并重新创建了 table。然后您返回到打开的 MPDAT_ALT 选项卡并刷新了“列”和“数据”选项卡。 “列”选项卡现在显示重新创建的 table 的新列顺序,但数据选项卡按 table.

的前一版本的顺序显示列

我可以重新创建它,这似乎归结为 SQL 开发人员缓存了它用来检索数据的查询。您可以使用完全不同的列名重新创建 table 并刷新“数据”选项卡,它仍会显示原始列标题。

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

  • 在“数据”选项卡处于活动状态时按 F5;或
  • right-click 连接中的表列表 window 并从那里选择刷新;或
  • 关闭 MPDAT_ALT table window 并从表格列表中重新打开它。

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

所有这些都适用于 SQL Developer 4.1.3。早期版本可能仍显示旧顺序,在这种情况下,您可能必须退出 SQL Developer 并重新启动它才能看到更改。


如果您在 dropping/recreating table 之前更改了“数据”选项卡(或 persisted a find/highlight)中的列顺序或宽度,SQL 开发人员会保留旧的“数据”选项卡中的列顺序。正如您所发现的,您可以 right-click 任何列标题并选择 'Delete Persisted Settings',这将使用新的列顺序重新生成选项卡 ​​- 但显然您随后会丢失自定义宽度、突出显示或任何您想要的内容已设置。