2011-07-19 52 views
0

我試圖拉查詢的位置'grad_year'是四年(4 OR語句之一),但我希望指定年份的條目首先出現。這是我擁有的SQL。在這個例子中,我想要2011年,2012年,2013年和2014年的參賽作品。例如,如何讓2012年的參賽作品首先出現?訂單的其餘部分無關緊要。謝謝!需要幫助優先輸出與SQL查詢

SELECT  user_meta.grad_year, 
      school_data.school 
FROM   user_meta 
    LEFT JOIN school_data 
    ON   user_meta.school_id = school_data.id 
WHERE  school_id = 2 
    AND  user_id != 102 
    AND  (user_meta.grad_year = 2011 
    OR  user_meta.grad_year = 2012 
    OR  user_meta.grad_year = 2013 
    OR  user_meta.grad_year = 2014) 
LIMIT  0, 15 
+0

題外話,但我會用'及其在user_meta.grad_year(2011,2012,2013,2014)'或之間,而不是4個OR值。 –

+0

@Brad,這樣做幾乎沒有什麼區別,仍然是4次測試,'between'會將其降至2 – Johan

+0

@Johan:是的,我發現了這個問題,但是試圖找到文檔並忘記了ENTER提交。謝謝你。 ;-)編輯:我也不知道這些年是否真的會一直按順序排列。 –

回答

0

這可能幫助

ORDER BY 
CASE 
    WHEN user_meta.grad_year = 2012 THEN 1 
    WHEN user_meta.grad_year = 2011 THEN 2 
    WHEN user_meta.grad_year = 2013 THEN 3 
    ELSE NULL 
end 
2

查詢更改爲:

SELECT  user_meta.grad_year, 
      school_data.school 
FROM   user_meta 
    LEFT JOIN school_data 
    ON   user_meta.school_id = school_data.id 
WHERE  school_id = 2 
    AND  user_id!=102 
    AND  (user_meta.grad_year BETWEEN 2011 and 2014) 
ORDER BY (user_meta.grad_year = 2012) DESC 
LIMIT  0, 15 

這將首先顯示2012項目,然後在偶然的順序所有其他項目。