2013-02-23 49 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获得升序或降序排列。