2016-02-17 60 views
0

如果finished = 1,我该如何通过start_date DESC命令查询,否则start_date ASC。现在它看起来就象这样:如果column = X,则通过DESC进行MySQL排序,否则ASC

SELECT game_id, 
    event_id, 
    start_date, 
    best_of, 
    home_team_id, 
    away_team_id, 
    home_value, 
    away_value, 
    home_result, 
    away_result, 
    stream_url, 
    stats_url, 
    comments, 
    finished 
FROM betting_games 
ORDER BY finished ASC, 
    start_date ASC 
LIMIT 5 

回答

3

这里有一种方法:

SELECT * 
FROM betting_games 
ORDER BY finished ASC, 
     CASE 
      WHEN finished = 1 THEN - 1 * UNIX_TIMESTAMP(start_date) 
      ELSE UNIX_TIMESTAMP(start_date) 
     END ASC 

不能从CASE表达式返回DESCASC。使用UNIX_TIMESTAMP,日期字段start_date被转换为一个整数,可用于以降序(一旦否定)存储。

Demo here

相关问题