2011-12-18 127 views
0

嗨,我有一個名爲msgsubjects的表,其模式如下所示。基本上它爲用戶保存消息。字段viewstatus用於顯示消息是否已被讀取/未讀取。如果它的0,味精是未讀,1,如果消息已被查看。如何根據字段對MySQL結果進行分組

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

你可以使用'TINYINT'(1個字節),而不是'INT'(4個字節) 'viewstatus'。甚至是「BIT」(1位)。 ''date''的'DATE'類型:http://dev.mysql.com/doc/refman/5.1/en/data-types.html – 2011-12-18 23:48:29

回答

4

你是想通過viewstatus

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

是對消息進行排序,這是一個非常簡單的解決問題的方法。

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

ORDER BY viewstatus ASC, date DESC 

鏈接到文檔中有關在MySQL排序:

相關問題