Mysql order by相同列的两次

jecbmhm3  于 11个月前  发布在  Mysql
关注(0)|答案(1)|浏览(135)

我需要设置一个默认顺序列,然后可以提供另一个顺序列作为参数以适应用户首选项。但是,我设置为默认的列也可能由用户选择。在这种情况下,它是否会成功应用以匹配用户的选择?以下是示例:

SELECT id, name, code, age, create_time FROM data_table
order by create_time asc, create_time desc

字符串
在这种情况下,查询结果将按'create_time'列升序或降序排序?
我想知道在这种情况下的实际结果,否则输出将是错误的。实际上,我在Navicat中测试了它,它的排序如预期的那样上升,但我不知道为什么。

nimxete2

nimxete21#

order by接受任意表达式,而不仅仅是列,行的顺序由最左边的顺序表达式决定,但有一个差异。没有要求一个列只能在一个表达式中使用。在你的例子中,它们将被升序排序;降序表达式将只在两行被比较的create_time相等时计算,在这种情况下,它将没有区别。
如果两行的create_time相同,则它们将以何种顺序返回并没有定义,甚至可能因查询而异。
我建议总是有足够的order by列来明确地确定顺序;在这种情况下,添加额外的order by表达式来区分任何两行(例如,id,如果它是唯一标识符)。

相关问题