我使用了Select Distinct查询,这导致了一个排序数据。反正我有没有得到数据排序?
答案 0 :(得分:10)
我会尝试详细说明发生了什么以及为什么......虽然我同意@ vic对这个问题的评论......
order by
子句),绝对不能保证结果集中的任何订单。distinct
查询,sql引擎会对数据进行排序,以便确保删除任何重复数据。简而言之,如果结果集的顺序很重要(即使所需的顺序是“随机”),您必须始终明确说明它。也就是说,从纯粹基于集合的数学/ sql的角度来看,结果的顺序无关紧要。
答案 1 :(得分:2)
将此信息放在查询的末尾。这将有效地随机化结果,然后您将看起来未排序;)
ORDER BY Rnd([ID]);
将ID
替换为表的主键。在Access SQL中,可以直接调用某些VB函数。在这种情况下,可以在查询中调用Rnd
函数,并从正在排序的数据中提供种子值。
答案 2 :(得分:0)
我认为排序可能与确定DISTINCT的方式有关。 返回不同值的最简单方法是对选择集进行排序 通过处理SQL谓词然后返回 仅返回DISTINCT列从前一行更改值的行。
简而言之, DISTINCT要求在删除重复行的情况下执行排序。
也就是说,无法保证在任何特定情况下都会向您返回行 订单除非您明确包含ORDER BY子句。