2010-09-06 53 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先其他。