我正在使用下面的查询对我网站上的帖子进行分页:
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##值,以及最右侧的时间戳day值73####。您将看到它们是向后分组的。
如何切换此查询,使其在相同的分组中以相反的顺序返回相同的结果?
例如:
哦,我的天!- Run This This(TMS混音) Lost Mapaches Back To Basics (La Royale remix)
来自巴黎的迪米特里& DJ罗卡-我需要一个LIving (电台混音)的原因,Chromeo -热门混乱(23 Dubstep Remix)
以此类推。我尝试删除desc值,但这只是返回表中最旧条目的分组。
发布于 2012-03-16 14:04:37
我会在子查询的外部对您的数据进行排序(注意最后一行),请调整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发布于 2012-03-16 14:04:19
您还需要向外部select添加一个ORDER BY,而不仅仅是要JOINed到的内部select。
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(最后一行是您需要添加的部分。)
https://stackoverflow.com/questions/9732647
复制相似问题