KEEP GOING
[MySQL] LeetCode : Tree Node (NOT IN) 본문
반응형
https://leetcode.com/problems/tree-node/submissions/
CASE WHEN 사용 ( IN )
SELECT id
,(CASE WHEN p_id IS NULL THEN 'Root'
WHEN id IN (SELECT p_id FROM Tree) THEN 'Inner'
ELSE 'Leaf'
END)AS type
FROM Tree
ORDER BY id
CASE WHEN 사용 ( NOT IN )
SELECT id
,(CASE WHEN p_id IS NULL THEN 'Root'
WHEN id NOT IN (SELECT p_id FROM Tree WHERE p_id IS NOT NULL) THEN 'Leaf'
ELSE 'Inner'
END)AS type
FROM Tree
ORDER BY id
* 주의할 점
NOT IN을 사용할 경우 소괄호의 서브쿼리를 처리할 때 유의할 점이다.
만약 서브쿼리절에 IS NOT NULL을 포함시키지 않는다면 다음과 같이 동작하게 된다.
id != 1
id != 2
id != null
null과의 비교연산은 항상 unknown 값을 반환한다.
모든 레코드가 True를 반환하지 못하므로 type 컬럼 값이 'Leaf'에 해당하는 노드들은 'Inner'를 받게 된다.
그러므로 NOT IN 절을 사용할 경우, 소괄호 안 서브쿼리는 반드시 IS NOT NULL을 포함해야 한다.
반응형
'code review > sql' 카테고리의 다른 글
[MySQL] LeetCode : Trips and Users (NOT IN) (0) | 2022.04.08 |
---|---|
[MySQL] LeetCode : Market Analysis (0) | 2022.04.07 |
[MySQL] 3주차 (for coding test) (0) | 2022.03.07 |
[MySQL] 2주차 (0) | 2022.03.06 |
[MySQL] 1주차 (0) | 2022.02.28 |
Comments