2016-07-31 48 views
-1

最近我一直在触底。1 | 18.07 | 0mysql查询按不同优先级排序

我现在想要做的是按日期对数据库条目的选择进行“排序”,如果日期已过并且值X没有改变,则将其附加到列表的顶部,并且如果该值在底部。

也许它更好地做出某种图形解释我的问题。

Entry | "date" | X 
1  | 10.07 | 0 
1  | 11.07 | 1 
1  | 12.07 | 1 
1  | 13.07 | 1 
1  | 14.07 | 1 
1  | 15.07 | 1 
1  | 16.07 | 1 
1  | 17.07 | 1 
1  | 18.07 | 0 
1  | 19.07 | 1 

这应该转化为

Entry | "date" | X 
1  | 19.07 | 1 
1  | 17.07 | 1 
1  | 16.07 | 1 
1  | 15.07 | 1 
1  | 14.07 | 1 
1  | 13.07 | 1 
1  | 12.07 | 1 
1  | 11.07 | 1 
1  | 18.07 | 0 
1  | 10.07 | 0 

是,即使可以用 “纯” MySQL的呢? 我一直试图通过“排序”按日期工作,但那不是我最终想完成的。

SELECT * FROM table_entries ORDER BY start_date ASC LIMIT 25 

有一个伟大的日子

+0

'ORDER BY X DESC,起始日期DESC' –

+0

'起始日期ASC,X DESC' OR可能只有'start_date DESC'就足够了 –

+0

这是什么奇怪的日期? –

回答

0

如果我把它弄对了,你想按X值排序(在顶部有一个),然后按日期对它们排序。 您可以在您的查询中使用
ORDER BY X,start_date
来实现。
您可以指定XASCDESCstart_date以获得所需的效果
您查询贵方觉得成为这样的事:
SELECT * FROM table_entries ORDER BY X DESC, start_date ASC LIMIT 25

+0

为什么你的人讨厌评论这么多 –

+1

答案不是评论,评论意在提问问题来澄清问题或答案 – magicleon

+0

非常感谢你,这对我帮助很大。但现在我需要一种方法来将项目“过期”(日期已过并且值未更改,因此X = 0)附加到顶部,而非EM下面的“过期”项目,也许图像解释更好[链接]( http://i.imgur.com/VxUCby4.png) – Alex

0

下单双方 'x' 和 '日期' 字段。因此,所有记录将按'x'排序,然后按日期排序。

SELECT * FROM table_entries ORDER BY x DESC, start_date DESC LIMIT 25 
+0

为什么人们讨厌这么多评论。 –