Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 其他列顺序超出预期_Sql_Database_Oracle_Oracle Sqldeveloper_Columnsorting - Fatal编程技术网

Sql 其他列顺序超出预期

Sql 其他列顺序超出预期,sql,database,oracle,oracle-sqldeveloper,columnsorting,Sql,Database,Oracle,Oracle Sqldeveloper,Columnsorting,我得到了一个带有列R\u ID、客户、订单日期、订单ID的表MPDAT\u ALT。客户有列R\u ID“1”、R\u ID“2”、订单日期“3”、订单ID“4”。 但数据以以下列顺序显示:R\U ID、客户、订单日期、订单ID。 为什么呢?我通过执行SQL语句创建了表MPDAT_ALT: CREATE TABLE MPDAT_ALT as (SELECT CUSTOMER, R_ID, ORDER_DATE, ORDER_ID from MPDAT) 表MPDAT首先有列R\u ID,然后

我得到了一个带有列R\u ID、客户、订单日期、订单ID的表MPDAT\u ALT。客户有列R\u ID“1”、R\u ID“2”、订单日期“3”、订单ID“4”。 但数据以以下列顺序显示:R\U ID、客户、订单日期、订单ID。 为什么呢?我通过执行SQL语句创建了表MPDAT_ALT:

CREATE TABLE MPDAT_ALT as (SELECT CUSTOMER, R_ID, ORDER_DATE, ORDER_ID from MPDAT) 
表MPDAT首先有列R\u ID,然后是CUSTOMER、ORDER\u DATE和ORDER\u ID。
为什么MPDAT_ALT不按列ID所表示的列顺序显示数据?

从注释中总结:您有一个现有的MPDAT_ALT表,您可以从“连接”窗口的“表”列表中选择它,在对象查看器中打开它。当该表选项卡打开时,您从工作表中删除并重新创建了该表。然后返回打开的MPDAT_ALT选项卡,刷新列和数据选项卡。“列”选项卡现在显示重新创建的表的新列顺序,但“数据”选项卡显示的列顺序与表的前一个版本相同

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

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

在数据选项卡处于活动状态时,按F5键;或 右键单击Connections窗口中的Tables列表并从中选择refresh;或 关闭MPDAT_ALT table窗口,然后从表列表中重新打开它。 然后,“列”和“数据”选项卡都将按照数据字典中定义的预期顺序显示列

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


如果在“数据”选项卡中或在删除/重新创建表之前更改了列顺序或宽度,SQL开发人员会在“数据”选项卡中保留旧的列顺序。正如您所发现的,您可以右键单击任何列标题并选择“删除持久化设置”,这将使用新的列顺序重新生成选项卡-但很明显,您将丢失自定义的宽度、高光或您设置的任何内容。

您指的是两个非常相似的表,也许您可以显示您使用的查询和少量的输出,在两个表上运行。还有您用来获取列ID的查询——这可能也是针对错误的表的。无论如何,使用select*并依赖数据字典中的列顺序被认为是不好的做法。如果您在选择列表中列出了列,您不会感到惊讶。我应该添加一些内容。。。表MPDAT_ALT以前存在,列顺序与MPDAT中的列顺序相同。然后我删除了MPDAT_ALT并再次创建了它,但这次使用了新的列顺序。我可以直接在SQL Developer中检查列ID。对我来说,当我在SQLDeveloper中单击数据时,数据的显示方式很重要。这很重要。是否刷新了表的SQL Developer视图?我猜你点击了“列”选项卡上的小刷新符号,但没有点击“数据”选项卡上的小刷新符号,这会使它们明显不同步。或者您可以关闭并重新打开表…是的,我还刷新了数据选项卡。DBMS_的重新定义可能是迈向解决方案的一步吗?因为它听起来像是一个临时的显示差异,你可以很容易地修复,不,那太过分了。为什么列顺序很重要?任何实际的查询都应该按照要求的顺序明确列出相关列。无论如何,从一个表创建另一个表听起来很奇怪-似乎您真的希望_ALT表成为一个只改变列顺序的视图;但是,如果您的查询编写正确,即使这样也没有必要。我使用的是SQL Developer 4.1.2,但即使关闭并刷新了所有内容,它也不会改变顺序。啊,我找到了解决方案!我可以在列上单击鼠标右键,然后单击“删除持久化设置”。这就解决了问题。非常感谢,我知道这是一个恼人的问题。@Puddle-我无法穿过桌子被扔下并重新创建,所以这仍然没有真正的意义。除非在删除/重新创建后对列重新排序。哦,好吧。。。啊,好的,有了一些数据和持续的高光,是的,它会保持原来的顺序。有趣的或者更改列宽/顺序,但前提是有数据,这是我以前没有做过的。好的,很有趣。