【发布时间】:2014-06-22 12:41:23
【问题描述】:
在一个 MS Access 2010 应用程序中,我使用以下 SQL 语句:
SELECT myTable.field1, myTable.field2, ...
INTO temporaryTable
FROM myTable
ORDER BY myTable.field4, myTable.field3
temporaryTable 中记录的顺序往往不是按照ORDER 子句中定义的顺序,也不是temporaryTable 中的顺序。
一段时间以来,我尝试在 There and Back Again 中排序和复制表,以使订单清晰和固定,但这没有帮助。它也似乎是一个幻象,有时有效,有时无效。所以我必须编写一个透明但缓慢的 VBA 解决方法。
有人知道这件事吗?这是一个错误吗?最好的解决方法是什么?我错过了要设置的参数吗?
提前致谢:-)
【问题讨论】:
-
订购餐桌有什么意义?没有什么意义,因为您总是可以在打开时订购它。请注意,在更高版本的 SQL Server 中,您可以在保存的视图中指定 order 子句。为什么不创建查询而不是临时表?
-
无论您输入记录的顺序是什么,如果您在表上运行选择查询,则无法保证每次都会以相同的顺序返回记录。确保您必须无论如何都要指定 order by 子句。
-
@iDevlop:这是真的,但该表会立即用于导出到带有
DoCmd.TransferSpreadsheet的 Excel。虽然这个命令很强大,但从那以后我就遇到了订购问题。这就是为什么我将查询作为TransferSpreadsheet的源(最舒适但排序问题)更改为临时表(仍然舒适且稳定)。表和TransferSpreadsheet命令之间现在没有问题,它们在查询和临时表之间的混乱。 -
@Swagata:我可以忍受这个。但我需要首先以正确的顺序创建使用
SELECT ... INTO temporaryTable创建的表。正如之前评论中提到的,我将表格提供给DoCmd.TransferSpreadsheet,所以它不在我的控制范围内。但是我了解到,一旦表格好了,导出到 Excel 就可以了。 -
好吧,不确定这是否适合您,但可能您可以先创建表,然后尝试 INSERT INTO....SELECT..ORDER BY 查询
标签: sql ms-access-2010 jet-sql