2013-02-23 76 views
1

我需要一些幫助來形象化,如果我可以用查詢做到這一點。一個MySql查詢檢索由Datetime排序的兩個部分?

我有元素1和元素2。

元素一是VIP

元素二是正常不重要。

所有其他的共同點是相同的。

如何從數據庫中選擇元素1和元素2,我通過創建日期排序,但所有VIP首先是普通元素?

table events 
eventid int 
eventinfo text 
vip  tinyint 
datecreated timestamp 

因此,必須先試着展示vips事件,然後再顯示每個頁面限制10個事件的其餘事件。

+0

什麼是VIP? – 2013-02-23 00:10:02

+0

非常重要的人,所以這就是爲什麼他們需要第一。 – GivenPie 2013-02-23 00:14:27

+0

不,我的意思是它與數據庫相關的是什麼,因爲你怎麼知道它是一個VIP? – 2013-02-23 00:15:13

回答

0

像這樣:

SELECT * 
FROM events 
ORDER BY CASE WHEN VIP = 1 THEN 0 ELSE 1 END, DateCreated DESC; 

這將使VIP是第一位的,然後其他元素的其他元素。

SQL FIDDLE DEMO

+0

是的,如果VIP是一個值,那麼這將是簡單的。 VIP實際上是一個很小的int列。所以我通過'vip = 1'訂購了 – GivenPie 2013-02-23 00:24:22

+0

@GivenPie OK,然後嘗試'按ORDER BY CASE當VIP = 1然後0 ELSE 1 END,DATECREATED' – 2013-02-23 00:25:57

+0

你還能限制嗎?謝謝,我擺弄你的情況。 Brilliants如何運作 – GivenPie 2013-02-23 00:31:15

0

您應該通過VIPdate結果。它應該是這個樣子的是:

SELECT (...) FROM (...) WHERE (...) ORDER BY date, VIP; 

您還可以添加ASCDESC獲得升序或降序排列。