我使用以下查询对我网站上的帖子进行分页:
select * from songs t1 join (
select to_days(date) day from songs
group by day
order by day desc
limit $start_row, $items_per_page
) t2
on to_days(t1.date) = t2.day
根据我的$start_row
和$items_per_page
,这将返回所有帖子,比如说过去7天。无论每天是否有超过1个帖子或一天是空的并且跳过。
例如:
查询上方已正确返回最近7天的所有帖子。今天。昨天。前一天等等......
但是,如果您查看最左侧的表id
12##
值,以及最右侧的时间戳日值73####
。你会发现它们是向后组合的。
如何切换此查询以便在相同的分组中以相反的顺序返回相同的结果?
例如:
哦,我的! - Run This Town(TMS remix) 失落的地图 - 回归基础(La Royale Remix)
来自巴黎的迪米特里& DJ罗卡 - 我需要一个理由(无线电混音) Chromeo - Hot Mess(23 Dubstep Remix)
依此类推......我尝试删除desc
值,但只返回表格中最旧条目的分组。
答案 0 :(得分:2)
您还需要在外部选择中添加ORDER BY
,而不仅仅是正在加入的内部选择。
SELECT *
FROM songs t1
JOIN (
SELECT to_days(date) day FROM songs
GROUP BY day
ORDER BY day DESC
LIMIT $start_row, $items_per_page
) t2 ON to_days(t1.date) = t2.day
ORDER BY day DESC
(最后一行是您需要添加的位。)
答案 1 :(得分:0)
我会在子查询的外部订购您的数据(请注意最后一行),请调整asc / desc的最后一行,或者如果您想订购。
select * from songs t1 join (
select to_days(date) day from songs
group by day
order by day desc
limit $start_row, $items_per_page
) t2
on to_days(t1.date) = t2.day
order by id desc