需要帮助使用SQL查询确定输出的优先级

时间:2011-07-19 15:44:03

标签: mysql sql

我正在尝试使用查询来提取列,其中'grad_year'是四年之一(4个OR语句),但我希望首先显示指定年份的条目。这是我的SQL。在此示例中,我想要2011年,2012年,2013年和2014年的条目。如何获取2012年的条目,例如,首先显示?订单的其余部分无关紧要。谢谢!

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

2 个答案:

答案 0 :(得分: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项目,然后按意外顺序显示所有其他项目。

答案 1 :(得分: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