这是我的报纸 table 。
National News A 1
Sports D 1
Editorials A 12
Business E 1
Weather C 2
Television B 7
Births F 7
Classified F 8
Modern Life B 1
Comics C 4
Movies B 4
Bridge B 2
Obituaries F 6
Doctor Is In F 6
当我运行此查询时
select feature,section,page from NEWSPAPER
where section = 'F'
order by page;
它给出了这个输出
Doctor Is In F 6
Obituaries F 6
Births F 7
Classified F 8
但是在 Kevin Loney 的 Oracle 10g Complete Reference 中,输出是这样的
Obituaries F 6
Doctor Is In F 6
Births F 7
Classified F 8
请帮助我了解它是如何发生的?
最佳答案
如果您需要在 ORDER BY
中的两个值时发生可靠的、可重复的排序子句的第一列是相同的,您应该始终提供另一个辅助列来进行排序。虽然您可以假设它们会根据输入的顺序(据我所知几乎总是如此,但请注意 SQL 标准没有指定任何形式的默认排序)或索引对它们进行排序,但您永远不应该(除非它对于您正在使用的引擎是专门记录的——即使那样,我个人也永远不会依赖它)。
如果您想在每个页面中按功能按字母顺序排序,您的查询应该是:
SELECT feature,section,page FROM NEWSPAPER
WHERE section = 'F'
ORDER BY page, feature;
关于sql - 如果两个值相等,order by 子句如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058045/