이 SQL 솔루션은 천재입니다!!🤩
오늘 제가 발견한 그러한 문제 중 하나는 아래에서 논의할 것입니다.
데이터베이스(608. 트리 노드)
문제 설명
트리에서 각 노드의 유형을 찾아야 합니다. 루트, 내부 또는 리프 노드인지 여부.

Input:
Tree table:
+----+------+
| id | p_id |
+----+------+
| 1 | null |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+----+------+
Output:
+----+-------+
| id | type |
+----+-------+
| 1 | Root |
| 2 | Inner |
| 3 | Leaf |
| 4 | Leaf |
| 5 | Leaf |
+----+-------+
Checkout the description thoroughly from the link above and try get an idea of solving it before checking out below approaches1. 나의 접근법
CASE를 사용하여 해결했습니다.핵심적인 세부 사항에 들어가고 싶지는 않지만 여기에 개요가 있습니다.
1.1 p_id가 null이면 루트 노드입니다.
1.2 id가 p_id에 있으면 내부 노드입니다.
1.3 그렇지 않으면 리프 노드입니다.
2. 천재적인 접근 방식(적어도 제 생각에는)
If 기능 사용코드는 다음과 같습니다.
SELECT
atree.id,
IF(ISNULL(atree.p_id),
'Root',
IF(atree.id IN (SELECT p_id FROM tree), 'Inner','Leaf')) Type
FROM
tree atree
ORDER BY atree.id
그것을 분해하자,
atree를 트리 테이블의 별칭으로 설정합니다. id를 선택합니다. 여기서 흥미로운 점!!!!
3. If 함수 생성
General usage of If function 👇
`If(10>27, YES, NO)`
It states that if condition `10>27` is true then **YES** else **NO**.
지금,
IF(ISNULL(atree.p_id),'Root'상태,p_id가 null이면 루트로 설정합니다.(그리고 마찬가지로 1.1의 조건이 만족되었습니다)
4. 또 다른 If 함수가
first If function as an Else condition 내부에 내장되어 있습니다.IF(atree.id IN (SELECT p_id FROM tree), 'Inner','Leaf')이것은 다음과 같이 말합니다.id가 p_id에 있으면 'Inner'로 설정하고 그렇지 않으면 'Leaf'로 설정합니다.(그래서 우리의 조건 1.2, 1.3이 만족되었어요🤩)
The genius behind this solution is designing it by utilizing of simple functions ordered in a perfect way.
As complex as it may seem, as simple it is I believe.
여기까지 했다면 이것에 대해 어떻게 생각하는지 알려주고 흥미로운 문제/해결책이 더 있으면 댓글에 언급하십시오.
Reference
이 문제에 관하여(이 SQL 솔루션은 천재입니다!!🤩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adityanikhil/this-sql-solution-is-genius-3ca6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)