2015-06-02 95 views
2
SELECT 
    r.*, 
    ss.length 
FROM 
    result r, 
    soptions ss, 
    sections s 
WHERE 
    r.model = s.id AND 
    s.catalog2_id = ss.catalog2_id AND 
    r.user_id = 1 AND 
    ss.erk_id = 4 AND 
    r.status_id NOT IN(1,2,3,4) 
ORDER BY 
    IF(r.side_id = 2, r.side_id, NULL) DESC, r.id 

這個sql命令適合我。 我沒有看到描述我的表格結構的原因,因爲我只是想在ORDER BY中增加一行。 不久之後,有沒有辦法使用像下面這樣的多個IF條件?或者我需要設置CASE WHEN ELSE?我曾嘗試使用CASE WHEN,但沒有得到結果。mysql動態ORDER BY子句

... 
ORDER BY 
    IF(r.side_id = 2, r.side_id, NULL) DESC, r.id 
    IF(r.status_id = 6, r.id, NULL) DESC, r.id 

回答

2

你能不能做這樣的事情:

(
    CASE 
     WHEN r.side_id = 2 
     THEN r.side_id 
     WHEN r.status_id = 6 
     THEN r.id 
     ELSE NULL 
    END 
) DESC, 
r.id