与预期不同的列顺序
Other column order than expected
我得到了一个 tables MPDAT_ALT
,其中包含 R_ID
、CUSTOMER
、ORDER_DATE
、ORDER_ID
列。 CUSTOMER
有 column_id '1'、R_ID
'2'、ORDER_DATE
'3'、ORDER_ID
'4'。
但数据以下列顺序显示:R_ID
、CUSTOMER
、ORDER_DATE
、ORDER_ID
。
这是为什么?我通过执行 SQL 语句创建了 table MPDAT_ALT
:
CREATE TABLE MPDAT_ALT as (SELECT CUSTOMER, R_ID, ORDER_DATE, ORDER_ID from MPDAT)
table MPDAT
首先有列 R_ID
,然后是 CUSTOMER
、ORDER_DATE
和 ORDER_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',这将使用新的列顺序重新生成选项卡 - 但显然您随后会丢失自定义宽度、突出显示或任何您想要的内容已设置。
我得到了一个 tables MPDAT_ALT
,其中包含 R_ID
、CUSTOMER
、ORDER_DATE
、ORDER_ID
列。 CUSTOMER
有 column_id '1'、R_ID
'2'、ORDER_DATE
'3'、ORDER_ID
'4'。
但数据以下列顺序显示:R_ID
、CUSTOMER
、ORDER_DATE
、ORDER_ID
。
这是为什么?我通过执行 SQL 语句创建了 table MPDAT_ALT
:
CREATE TABLE MPDAT_ALT as (SELECT CUSTOMER, R_ID, ORDER_DATE, ORDER_ID from MPDAT)
table MPDAT
首先有列 R_ID
,然后是 CUSTOMER
、ORDER_DATE
和 ORDER_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',这将使用新的列顺序重新生成选项卡 - 但显然您随后会丢失自定义宽度、突出显示或任何您想要的内容已设置。