2011-07-20 230 views
4

我有一张表,其中有三个字段,数据类型为date,intbigintMySQL按不同排序顺序对多列进行排序

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

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

是否有可能从所有三列的最大值开始获得结果。 像最新的日期,最高的intnum和最高的bigintnum。

+4

您提供的查询看起来有效。 PS:mysql dba询问sql基础问题看起来很有趣;-) – zerkms

+0

@Devjosh:那又如何?它**有可能**得到所有字段后代排序的结果集,从每个列的最高值开始。 – zerkms

+0

@zerkms,MySQL数据库管理员:是的,这是可能的:),我们的同事发布的问题没有错 – Devjosh

回答

2

没有

你的查询确实是拿到max date,其次是max datemax intnum随后的max date

换句话说,max 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 
+0

我刚才试了一下,这是该行为 –

+0

你只是误解了我的答案,或者你只是困惑 –

+0

是的,我是一个白痴,为你+1了。对不起 – zerkms

1

不可能从所有三列中的最大值开始获得结果。像最新的日期,最高的intnum和最高的bigintnum。

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

正如你所知道的ORDER BY呢,如果你by子句必须按顺序多列,它会通过日期递减一级,然后在第一次约会就通过INTNUM说明通过BIGINTNUM顺序,然后顺序。