0

我正在使用 LEFT JOIN 获得排名靠前的帖子(排名在一个表中,在另一个表中发布信息)以获得过去两周发布的排名前 4 位的帖子。我能够获得这些信息的方式只是按最高排名排序。但是,我希望我的前 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 行结果按 entry.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; 
4

1 回答 1

0

但是,我希望我的前 4 个结果不按排名顺序 (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; 
于 2012-11-20T03:44:05.697 回答