테스트 사이트 - 개발 중인 베타 버전입니다

mysql 쿼리문 질문 드립니다. 채택완료

toqurk 2년 전 조회 2,495

데이터 쿼리는 3개 테이블 조인문을 사용했습니다.

 

A 테이블 -> 회원정보

B 테이블 -> 회원상세정보

C 테이블 -> 계약정보

 

리스트로 Loop 를 돌렸을때 C의 계약정보에 월세가 납입되는 날짜 값이 존재 합니다.

 

데이터는 매달 몇일 이기에 날짜값만 넣었습니다.

 

리스트로 나열될때 가장 오늘과 가까운 데이터를 우선으로 나열할수있는 방법이 무엇일까요??

 

ORDER BY 절을 사용하는것까진 알겠는데 그 뒤를 모르겠네요..

 

데이터는

1. 14일 데이터

2. 15일 데이터

3. 16일 데이터

4. 17일 데이터

 

라고 할때 리스트의 나열 순서가 3, 4, 1, 2 로 되었음 합니다.

 

 

도와주세요.

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
2년 전

ORDER BY DATEDIFF(curdate(), date_column) ASC;

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

t
toqurk
2년 전
답변 주신 것에서 변형하여 ORDER BY DATEDIFF(16, date_column) ASC; //16오늘 날짜
로 해봤는데...데이터가 14일과 22일 존재 할경우 14일이 우선 순위 입니다.
14일은 지난 날짜가 되어서 후순위가 되어야 하는데요..ㅜㅜ
마르스컴퍼니
2년 전
ORDER BY DATEDIFF(curdate(), date_column) ASC, date_coumn desc
t
toqurk
2년 전
감사합니다.

원하는데로 나오고 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

LeonSoftㅣCeo

데이터를 저장할때 order_idx 같은 컬럼을 추가하고 원하시는 순번을 넣어 order by order_idx asc 하심이 좋아보입니다. 쿼리로 제어하기에는 변수가 많을거 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

지름신2
2년 전

order by field asc

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

2년 전

3,4,1,2의 기준이 무엇인지 모르겠지만,

아마도 오늘, 내일,,, 그리고 날짜순의 기준인거 같은데, 이 기준이 맞다면

ORDER BY FIELD(date_column,내일,오늘) desc 로 정렬하시면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

t
toqurk
2년 전
3,4,1,2 는 예제(1. 14일 데이터, 2. 15일 데이터, 3. 16일 데이터, 4. 17일 데이터) 기준 이구요..

알려주신 방식으로 처리 햇을 경우 실 데이터가 14, 30, 18 일경우 14, 18, 30 순으로 나열됩니다.

제가 원하고자 하는건 18, 30, 14 순으로 나였이 되었음 하는 바램입니다.
t
toqurk
2년 전
답변 댓글 감사합니다.
많은 참고로 된 것 같네요..

댓글을 작성하려면 로그인이 필요합니다.

플라이
2년 전

데이터를 가져올때 이번달의 기준으로 데이터를 가져와서 일자별로 정렬을 하면 좋을듯 한데
지금기준은 일자만의 기준이라 정렬이 애매하긴 합니다. 만약 위 기준으로 정렬을 하려면
월별 컬럼에 월기준을 넣어서 정렬을 해주셔야 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

t
toqurk
2년 전
지금 이러게 저러게 하다
ORDER BY FIELD(Date, 오늘(16), 내일(17), 0) DESC, Date ASC
이러게 해봤는데...먹히긴 하는데...틀린것 같기도 하고....

어렵네요..
플라이
2년 전
contractDate 의 기준이 뭔지는 모르겠지만 기준은 오늘 기준으로 뒤에 날짜로 정렬해서 가져오는게 효과적인데 월기준을 구분하지 못하면 정렬하기에는 솔직히 애매합니다.
t
toqurk
2년 전
잘못 썼네요...댓글 수정했습니다.

월을 매월이기에 일자만 DB에 저장했는데...14일 일 경우 3월14일, 4월 14일 5월14일...
계속 반복할 내용이라서...
t
toqurk
2년 전
답변 감사합니다.
많은 참고가 되었습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인