使用PHP对SQL结果进行双重排序

时间:2012-11-20 03:41:26

标签: php mysql sql sorting

我正在使用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; 

1 个答案:

答案 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;