【发布时间】:2016-08-22 02:12:12
【问题描述】:
我的第一篇文章...
我有一个新闻故事表,用户在其中标记故事,优先级为 1、2、3、4,以便在网站主页上显示。
问题在于,当他们添加故事时,旧的故事会被推到 CMS 中的第二页、第三页等。然后他们标记一个新的“1”、“2”等,而不清除旧的 1、2 等——它们保留在数据中,以防新的数字 1 被“降级”(标记被删除)或被删除。
我想要输出的是每个数字“1”、“2”、“3”和“4”中最新的新闻和标题。
我发现了一些类似的帖子,但重要的不是时间戳,而是标志字段(称为“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
-
按 xorder ASC 订购让我得到所有的 1,然后得到所有的 2。我想要最近的 1,然后是最近的 2,然后是最近的 3,然后是最近的 4。“最近”是指 xtimestamp 字段。
标签: mysql