2013-11-14 38 views
0

這裏是我的表items選擇一些項目,如果沒有足夠的人,加上一些其他的項目,然後排序

id type  important date     
-------------------------------------------------- 
1  articles 0   2013-11-14 01:10:00 
2  articles 0   2013-11-14 02:45:00 
3  articles 1   2013-11-15 03:00:00 
4  articles 0   2013-11-15 04:23:00 
5  articles 1   2013-11-17 05:21:00 
6  news  0   2013-11-18 06:00:00 
7  news  0   2013-11-19 07:00:00 
8  news  0   2013-11-19 08:00:00 

我需要顯示三個重要項目,或者,如果沒有足夠的人,加新聞混合,直到有三個。然後按日期從最新到最舊排序。

如果我寫這篇文章只是爲:

SELECT * FROM `items` WHERE important = 1 OR type = 'news' 
ORDER BY `important` DESC, `date` DESC LIMIT 3 

然後兩個重要的項目會比最新的新聞項目更高。但是,我需要得到這個:

id type  important date     
-------------------------------------------------- 
8  news  0   2013-11-19 08:00:00 
5  articles 1   2013-11-17 05:21:00 
3  articles 1   2013-11-15 03:00:00 

我怎麼能做到這一點與SQL?

+0

你只是想相反的順序?將DESC更改爲ASC。 – mcwyrm

回答

1

這會做詭計嗎?

SELECT * FROM (
    SELECT * FROM `items` WHERE important = 1 OR type = 'news' 
    ORDER BY `important` DESC, `date` DESC LIMIT 3 
) x 
ORDER BY `date` DESC 
+0

謝謝,死得很簡單。我怎麼能忘記這一點!我可能需要休息一下:) – pati

相關問題