mysql 정렬 질문입니다.

mysql 정렬 질문입니다.

QA

mysql 정렬 질문입니다.

본문

 

id createdDatetime updatedDatetime
1 2021-01-21 18:02:11 NULL
2 2021-02-08 14:44:39 2021-02-08 14:46:25
3 2021-01-21 17:44:43 2021-01-22 16:04:21
4 2021-01-21 17:44:43 NULL

 

1,4번은 생성 이후 수정하지 않아서 updatedDatetime이 null인 상태입니다. 

정렬순서를 2-3-1-4 이런 순으로 하고 싶습니다. 

updatedDatetime, createdDatetime 두 항목을 하나의 항목처럼 만들어서 정렬을 시키고 싶은데 어떻게 해야 가능할까요 ㅠ



ORDER BY (CASE createdDatetime WHEN NULL THEN updatedDatetime
  else updatedDatetime) desc

이런식으로 접근했지만 문법이 틀렸어요 ㅠ

이 질문에 댓글 쓰기 :

답변 4


CREATE TABLE IF NOT EXISTS `zoo1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `createdDatetime` datetime DEFAULT NULL,
  `updatedDatetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `zoo1` VALUES(1, '2021-01-21 18:02:11', NULL);
INSERT INTO `zoo1` VALUES(2, '2021-02-08 14:44:39', '2021-02-08 14:46:25');
INSERT INTO `zoo1` VALUES(3, '2021-01-21 17:44:43', '2021-01-22 16:04:21');
INSERT INTO `zoo1` VALUES(4, '2021-01-21 17:44:43', NULL);
INSERT INTO `zoo1` VALUES(5, '2021-02-08 14:46:26', NULL);

 


SELECT * FROM `zoo1` WHERE 1 
ORDER BY 
CASE  
    WHEN `updatedDatetime` IS NULL THEN 1
    ELSE 0
    END,
`updatedDatetime` DESC,
`createdDatetime` DESC
// 2-3-5-1-4

아 이런 정렬방식 사용하고있으면서 생각으로 못하고 있었네요 ㄷㄷ


SELECT * FROM `zoo1` WHERE 1 
ORDER BY 
CASE  
    WHEN `updatedDatetime` IS NULL THEN `createdDatetime`
    ELSE `updatedDatetime`
    END DESC

좀 수정해서 저는 이렇게 사용합니다.

order by updateDatetime desc, createdDatetime desc

 

order by를 이렇게 같이 해보세요

답변을 작성하시기 전에 로그인 해주세요.
전체 1,543
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT