【问题标题】:MySQL sorting multiple columns with different sort orderMySQL以不同的排序顺序对多列进行排序
【发布时间】:2014-07-07 14:15:35
【问题描述】:

我有一个表,其中包含三个数据类型为dateintbigint 的字段。

我想使用所有这三列对我的选择查询进行排序。我想按降序对它们进行排序。例如:

Select * From mytbl 
order by date desc,intnum desc, bigintnum desc;

我是否有可能从所有三列的最大值开始得到结果。 如最新日期、最高 intnum 和最高 bigintnum。

【问题讨论】:

  • 您提供的查询看起来有效。 PS:mysql dba 询问 sql 基础问题看起来很有趣 ;-)
  • @Devjosh:那又怎样? 有可能获得按所有字段后代排序的结果集,从每列的最高值开始。
  • @zerkms,MySQL DBA:是的,有可能 :),我们的同行发布的查询没有问题
  • 大家好,感谢您的 cmets,但我希望此查询执行的操作如下:- 我有一个数据,例如:- DATE intnum bigintnum 2011-07-18 9 546545 2011-07 -16 10 123456

标签: mysql sql-order-by


【解决方案1】:

没有

您的查询所做的是获取max date,然后是max datemax intnum,然后是max datemax intnummax bigintnum

换句话说,您的查询不会返回所有三列的最大值

它首先按日期排序,然后是 intnum,然后是 bigintnum 结果会是这样的

2011-07-20    12    14
2011-07-20    12    13
2011-07-20    11    16
2011-07-20    10    12
2011-07-19    20    15
2011-07-18    60    30
2011-07-18    50    14

【讨论】:

  • 你只是误解了我的回答,或者你只是感到困惑
  • @bash :- 是的,你是对的,这就是 order by 子句的常见行为,但我希望按照我说的方式......任何想法使用我能做到的任何其他方式? ?谢谢
  • @MySQLDBA 我不太明白你想做什么。您是否试图获得 3 列,其中排序按 DESC 顺序排列,与其他列无关?与我的答案中的那个有关吗? 2011-07-20 60 30 2011-07-20 50 16 2011-07-20 20 15 所以基本上都是分开订购的?
  • @MySQLDBA 你为什么不更新你的问题并输入你想要输出的内容。
【解决方案2】:

不可能从所有三列的最大值开始得到结果。比如最近的日期、最高的 intnum 和最高的 bigintnum。

 Select * From mytbl 
 order by date desc,intnum desc, bigintnum desc;

您知道 ORDER BY 的作用,如果您在 order by 子句中有多个列,它将首先按 DATE Desc 排序,然后对于第一个 Date 它将按 INTNUM Desc 排序,然后按 BIGINTNUM 排序。

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多