0

在 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 解决方法。

有谁知道这件事,这是一个错误,什么是最好的解决方法?我错过了要设置的参数吗?

提前致谢 :-)

4

2 回答 2

1

对这类问题的标准回答是:

您永远不应该依赖表中的行处于任何特定的“自然”顺序。对于大多数(如果不是全部)数据库都是如此,而不仅仅是 Access。换句话说SELECT * FROM something(或等效的)没有 ORDER BY 子句意味着可以按任何顺序返回行。事实上,如果您多次执行这样的语句,则每次调用可能不一定以相同的顺序返回行(尽管 Access 确实倾向于相当一致)。

如果您需要按特定顺序将记录导出到 Excel(如问题注释中所述),则应在 Access 中创建一个包含 ORDER BY 子句的已保存查询,然后将查询导出到 Excel。

于 2014-06-22T13:24:27.530 回答
1

如果您确实需要临时表和特定顺序,请尝试使用 DELETE + APPEND 查询而不是 MAKE TABLE 查询。在您的“不太临时”表中,您将能够定义主键和/或默认排序顺序。

于 2014-06-22T13:41:01.407 回答