MS Access选择..进入语句无序

时间:2014-06-22 12:41:24

标签: sql ms-access-2010 jet-sql

在MS Access 2010应用程序中,我使用此SQL语句:

SELECT myTable.field1, myTable.field2, ... 
INTO temporaryTable
FROM myTable
ORDER BY myTable.field4, myTable.field3

temporaryTable中记录的顺序通常不符合ORDER子句中的定义,也不符合temporaryTable中的顺序。

一段时间以来,我已经尝试过订购和复制表格,然后再次将表格清除并修复,但它没有帮助。它似乎也是一个幻像,有时它起作用,有时候不起作用。因此,我必须编写一个透明但缓慢的VBA解决方法。

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

提前致谢: - )

2 个答案:

答案 0 :(得分:1)

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

你永远不应该依赖于任何特定的表中的行" natural"订购。大多数(如果不是全部)数据库都是如此,而不仅仅是Access。换句话说,没有ORDER BY子句的SELECT * FROM something(或等效)意味着可以任何顺序返回行。实际上,如果你多次执行它,这样的语句可能不一定会以相同的顺序返回每个调用的行(虽然Access确实对它有相当的一致性)。

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

答案 1 :(得分:1)

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