2015-06-02 65 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