按时间排序时出现问题。我有一个DB(使用访问数据库),其中一些条目具有完全相同的时间(甚至秒)。当我按时间对事件进行排序时,表会先按时间对记录进行排序,然后根据下一列的第一个字母对它们进行组织。
'Select * FROM Events Where RunNo = ' + RunNo + ' ORDER By Time'
RunNo Time Expination
1 6:23:29AM Installing
1 6:23:29AM Doing Something
正在发生的事情是,在我使用上述查询生成的报告中,在“安装”之前出现“正在做事”,即使“安装”是我的数据库中的第一个。如何使我的订单按时间不改变顺序,但保留顺序并继续按时间顺序排序另一个顺序?
答案 0 :(得分:0)
评论太长了。
SQL中的 ORDER BY
(一般情况下)不是 stable 。这意味着具有相同键值的行可以按任意顺序排列 - 甚至可以从一次运行更改为下一次运行。
一般解决方案是在行 - 标识列或创建日期使用唯一标识。然后你可以这样做:
ORDER BY Time, id
答案 1 :(得分:0)
在 Access 中,您可以使用 Switch :
'Select * From Events Where RunNo = ' + RunNo + ' ORDER By Time, Switch([Expination] = "Installing", 0, [Expination] = "Doing Something", 1, [Expination] = "Ready for use", 2)'