2017-09-14 1 views
0

이 데이터는 MySQL 테이블에 있습니다. order by effective_to DESC MySQL - 조건이 두 열에 의한 주문

내 데이터

name   effective_from  effective_to 
person 01  1999-04-01   1999-05-31 
person 02  1999-04-01   2000-07-06 
person 03  1999-04-01   2000-09-25 
person 04  1999-04-01   2000-09-25 
person 07  1999-04-01   2000-09-25 
person 05  2013-04-29   NULL 
person 08  2010-06-17   2012-09-27 
person 09  2010-12-02   2012-09-27 
person 10  2017-02-10   NULL 
person 11  2017-02-10   NULL 
person 12  1999-04-01   2000-07-06 
person 13  2011-04-28   2015-10-06 
person 05  2013-04-29   2017-02-15 
person 06  2015-09-22   2017-02-15 
person 06  2015-09-22   2017-02-10 

I, 에, NULL입니다

  • effective_to 경우는 effective_toNOT NULL이다 첫번째 및 order by effective_from DESC
  • 경우 보여 나는 조건에 의해 주문 결과를 필요 결과가 필요합니다.

    name    effective_from effective_to             
    person 11  2017-02-10   NULL 
    person 10  2017-02-10   NULL 
    person 05  2013-04-29   NULL 
    person 06  2015-09-22   2017-02-15 
    person 05  2013-04-29   2017-02-15 
    person 06  2015-09-22   2017-02-10 
    person 13  2011-04-28   2015-10-06 
    person 09  2010-12-02   2012-09-27 
    person 08  2010-06-17   2012-09-27 
    person 07  1999-04-01   2000-09-25 
    person 03  1999-04-01   2000-09-25 
    person 04  1999-04-01   2000-09-25 
    person 12  1999-04-01   2000-07-06 
    person 02  1999-04-01   2000-07-06 
    person 01  1999-04-01   1999-05-31 
    

    어떻게하면됩니까?

+0

다른'effective_to'을 선택하고 각각의 원하는 '주문 BY'를 사용하는 두 쿼리의'UNION'를 사용합니다. – Barmar

+2

SO는 무료 코딩 서비스가 아닙니다. 문제를 직접 해결해야합니다. 작동시키지 못하면 시도한 것을 게시하고 해결하도록 도와 드리겠습니다. – Barmar

답변

1

(영업 이익 대신에 게시 됨)해야한다.

나는이처럼 내 문제를 해결 :

ORDER BY `effective_to` IS NOT NULL ASC, `effective_to` DESC, 
    `effective_to` IS NULL, `effective_from` DESC; 
1

이것은

... 
ORDER BY 
ISNULL(effective_from) DESC, 
IF(ISNULL(effective_to) = 1, effective_from , effective_to) DESC 
관련 문제