我正在使用LEFT JOIN获得排名靠前的帖子(排名在一个表中,在另一个表中发布信息)以获得过去两周内发布的排名前四的帖子。我能够获得这些信息的方式只是排名靠前。但是,我希望我的前4个结果不按其排名(voting.vote)的顺序出现,而是按其发布日期(entries.id)的顺序排列。我不确定这样做的最佳方法是什么。下面是我的SQL语句,目前用于显示时间范围内排名前4位的项目。
$result = mysql_query("SELECT entries.permalink, entries.title, voting.vote FROM entries LEFT JOIN voting ON voting.id = entries.id WHERE date>='$twoweeks' ORDER BY voting.vote DESC LIMIT 4");
有没有办法可以获得4行结果然后由entries.id排序或者我是否需要在php中使用数组等外部执行此操作?
以下编辑解决了从评论中提取的信息。
SELECT *
FROM
(
SELECT
entries.permalink,
entries.title,
voting.vote,
entries.id
FROM entries
LEFT JOIN voting ON voting.id = entries.id
WHERE date>='$twoweeks'
ORDER BY voting.vote DESC
LIMIT 4
) t
ORDER BY id;
答案 0 :(得分:0)
但是,我希望我的前四名结果不会按照他们的顺序出现 排名(voting.vote),但按其发布日期的顺序排列 (entries.id)。
试试这个:
SELECT *
FROM
(
SELECT
entries.permalink,
entries.title,
voting.vote
FROM entries
LEFT JOIN voting ON voting.id = entries.id
WHERE date>='$twoweeks'
ORDER BY voting.vote DESC
LIMIT 4
) t
ORDER BY entries.id;
-- Or ORDER BY entries.published date;