2011-07-20 284 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順序,然後順序。