通过不按预期工作的顺序

时间:2014-06-23 18:14:16

标签: sql

我想在两个日期之间拉入所有bday会员 - 无论年份如何......只需要一个月和一天..我得到的结果正确检索,但没有按照我的预期订购......

我需要逐月订购的记录和按升序排列的天数 - 这样一个月内的成员就会按照升序排列。(我按月分组,但不按天分组)

查询:

  SELECT * 
  FROM family_member 
  WHERE DATE_FORMAT(dob, '%m-%d') 
          BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') 
             AND DATE_FORMAT('2013-09-30', '%m-%d') 
  order by MONTH(dob)
          ,DAYOFMONTH(dob) 
          and status='a'

1 个答案:

答案 0 :(得分:3)

我认为你需要取出and中的order by

SELECT * FROM family_member 
  WHERE DATE_FORMAT(dob, '%m-%d') BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') AND DATE_FORMAT('2013-09-30', '%m-%d') 
  order by MONTH(dob), DAYOFMONTH(dob), status='a'

正如所写,按MONTH(dob)进行排序,然后是AND DAYOFMONTH(dob)status='a'

的布尔结果

或者您已将order by插入where子句的中间位置:

SELECT * FROM family_member 
  WHERE DATE_FORMAT(dob, '%m-%d') BETWEEN DATE_FORMAT('2013-07-1', '%m-%d') AND DATE_FORMAT('2013-09-30', '%m-%d') 
     and status = 'a'
  order by MONTH(dob), DAYOFMONTH(dob)