2016-04-27 90 views
2

我的第一篇文章...mysql找到最新的每個ID

我有一個新聞故事表,其中用戶標記故事,優先級1,2,3,4在網站主頁上顯示。

問題是,當他們添加故事時,舊版本會被推送到CMS中的第二頁,第三頁等。然後,他們會標記新的「1」,「2」等,而不清除舊的1,2等等 - 這些數據仍保留在數據中,以防萬一新數字1被「降級」(刪除該標誌)或被刪除。

我想要得到的是每個數字「1」,「2」,「3」和「4」中最新的newsid和標題。

我發現了一些類似的帖子,但它的標記字段(稱爲「xorder」)的重要性不是時間戳。在「newsStories」表中的相關字段下面:

newsid  int 
headline varchar(60) 
xorder  int (number or null) 
xtimestamp datetime - this is the publish date 

在這種情況下的xtimestamp場是他們想要的新聞報道出現(發佈日期),而不是一個時間戳字段作爲它的日期/時間重要,這將由MySQL更新。我們不想顯示發佈日期/時間大於當前系統時間戳的故事(允許故事被禁止)。我們在網頁加載時生成查詢,因此我們的條件讀取的內容類似於:

where xorder IS NOT NULL 
AND xorder > 0 
AND xtimestamp <= 201604271800 (for 6pm today) 

(由於還有其他標準,這略有簡化)。

我按xtimestamp desc和xorder asc進行排序,只是找到前4條記錄,但是這並沒有給出正確的xorder。

希望這是有道理的,任何幫助表示讚賞。

+0

所以你想從1 - 4訂購xorder?只需添加ORDER BY xorder ASC – Matt

+0

[獲得每組分組結果的前n條記錄]的可能副本(http://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of - 結果) – Shadow

+0

order by xorder ASC讓我全部1,然後所有的2。我想要最近的1,然後是最近的2,然後是最近的3,然後是最近的4.By「最近的」,我的意思是xtimestamp字段。 –

回答

0

看看在select章關鍵字order bylimit您的SQL文件

0

答案是UNION ALL語句英寸對我來說,這是4個獨立的select語句,每個語句都有一個極限1,並且它們之間都是union。它確實有效,但似乎有點笨重。