我的第一篇文章...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。
希望这是有道理的,任何帮助表示赞赏。
所以你想从1 - 4订购xorder?只需添加ORDER BY xorder ASC – Matt
[获得每组分组结果的前n条记录]的可能副本(http://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of - 结果) – Shadow
order by xorder ASC让我全部1,然后所有的2。我想要最近的1,然后是最近的2,然后是最近的3,然后是最近的4.By“最近的”,我的意思是xtimestamp字段。 –