2010-09-06 52 views
1

我有以下查詢:SQL(MySQL的)順序問題

SELECT a.field_eventid_key_value, a.field_showdate_value, b.nid , c.nid AS CNID 
    FROM content_type_vorfuehrung AS a 
    LEFT JOIN content_type_movies as b ON a.field_eventid_key_value = b.field_eventid_value 
    LEFT JOIN content_type_sonderveranstaltung as c ON a.field_eventid_key_value = c.field_sonderveranstaltungid_value 
    WHERE /* something */ 
    GROUP BY a.field_eventid_key_value, a.field_showdate_value, 
    ORDER BY a.field_showdate_value ASC,a.field_showtime_value ASC 

(where子句中刪除,因爲它無關的問題)

這3頁不同的表中提取數據並對其排序,根據第一個表中的「showdate」字段。這用於返回一個包含結果的數組的PHP函數。

現在有一個新的要求:此查詢中的表「content_type_movies」有一個應該是布爾值的字段(實際上它是一個值爲「0」或「1」的int)。該字段應該覆蓋時間順序 - 也就是說,字段爲「真」(或分別爲「1」)的結果應該出現在結果數組的開頭(其餘條目按照時間順序排列)。

這是所有可能的一個單一的查詢?

預先感謝您的寶貴時間,

埃克

回答

1

您可以使用:

ORDER BY b.MyIntField DESC, 
    a.field_showdate_value, 
    a.field_showtime_value 

其中MyIntField是1或要首先排序0場。

1
ORDER BY a.content_type_movies DESC, /*then other fields*/ a.field_showdate_value ASC,a.field_showtime_value ASC 

應該將所有行與content_type_movies = 1先其他。