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
ORDER BY IFNULL(`updatedDatetime`, `createdDatetime`) DESC
이렇게 하시면 되지 않을까요?
order by updateDatetime desc, createdDatetime desc
order by를 이렇게 같이 해보세요
이게 맞는 방법인지는 모르겠지만
생성 시 createdDatetime, updatedDatetime 둘 다 데이터를 넣는 방향으로 해결했습니다.
답변을 작성하시기 전에 로그인 해주세요.