我需要设置一个默认顺序列,然后可以提供另一个顺序列作为参数以适应用户首选项。但是,我设置为默认的列也可能由用户选择。在这种情况下,它是否会成功应用以匹配用户的选择?以下是示例:
SELECT id, name, code, age, create_time FROM data_table
order by create_time asc, create_time desc
字符串
在这种情况下,查询结果将按'create_time'列升序或降序排序?
我想知道在这种情况下的实际结果,否则输出将是错误的。实际上,我在Navicat中测试了它,它的排序如预期的那样上升,但我不知道为什么。
1条答案
按热度按时间nimxete21#
order by接受任意表达式,而不仅仅是列,行的顺序由最左边的顺序表达式决定,但有一个差异。没有要求一个列只能在一个表达式中使用。在你的例子中,它们将被升序排序;降序表达式将只在两行被比较的create_time相等时计算,在这种情况下,它将没有区别。
如果两行的create_time相同,则它们将以何种顺序返回并没有定义,甚至可能因查询而异。
我建议总是有足够的order by列来明确地确定顺序;在这种情况下,添加额外的order by表达式来区分任何两行(例如,id,如果它是唯一标识符)。