如何根据字段对MySQL结果进行分组

时间:2011-12-18 23:37:43

标签: php mysql

嗨,我有一个名为msgsubjects的表,其架构如下所示。基本上它为用户保留消息。字段viewstatus用于显示是否已读取消息。如果它是0,则msg未读,如果已查看消息,则为1。

id  int(11)         No      auto_increment                          
    ownerid int(11)         No                                  
    posterid    int(11)         No                                  
    viewstatus  int(11)         No                                  
    bodyid  int(11)         No                                  
    subject varchar(255)    utf8_general_ci     No                                   
    date    int(11)

这是我当前用来获取这些结果的SQL。

$q=sprintf("SELECT * FROM msgsubjects WHERE ownerid=%d ORDER BY date DESC LIMIT %d,%d",$curid,$start,$end);

我想要做的是将我的结果返回分组,首先显示未读消息,我希望这些组仍按日期排序。这可以用sql完成吗?我知道我可以用php做到这一点,但是sql会更有效率。

2 个答案:

答案 0 :(得分:4)

您想要按viewstatus

对邮件进行排序
$q=sprintf("SELECT * FROM msgsubjects WHERE ownerid=%d ORDER BY viewstatus ASC, date DESC LIMIT %d,%d",$curid,$start,$end);

答案 1 :(得分:1)

是的,这是解决问题的一个非常简单的方法。

ORDER BY接受多个字段,以便您可以使用多个列进行排序。

ORDER BY viewstatus ASC, date DESC 

链接到有关MySQL排序的文档: