| 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 두 항목을 하나의 항목처럼 만들어서 정렬을 시키고 싶은데 어떻게 해야 가능할까요 ㅠ
Copy
ORDER BY (CASE createdDatetime WHEN NULL THEN updatedDatetime
else updatedDatetime) desc
이런식으로 접근했지만 문법이 틀렸어요 ㅠ
|
답변 4개 / 댓글 3개
채택된 답변
+20 포인트
Copy
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);
Copy
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 updateDatetime desc, createdDatetime desc
order by를 이렇게 같이 해보세요
답변에 대한 댓글 2개
답변을 작성하려면 로그인이 필요합니다.
[code]
SELECT * FROM `zoo1` WHERE 1
ORDER BY
CASE
WHEN `updatedDatetime` IS NULL THEN `createdDatetime`
ELSE `updatedDatetime`
END DESC
[/code]
좀 수정해서 저는 이렇게 사용합니다.