請給我一張這樣結構的表。
| 數字 | 家長 |
|---|---|
| 1個 | 無效的 |
| 2個 | 1個 |
| 3個 | 2個 |
我想執行一個遍歷行的 SQL 查詢,并為每一行輸出案例的兩個值之一:
- 如果該數字是另一個數字的父級,則案例將為該行輸出“父級”標簽。例如數字 1 和 2
- 如果 Number 不是父節點,即葉子,則 case 陳述句將為該行輸出“Not Parent”。例如 3 號。拜托,我該怎么做?我真的對如何構建案例陳述感到困惑。SQL 新手。謝謝
uj5u.com熱心網友回復:
parent列中的數字parent。leaf不是的數字parent
select n.number,
case
when p.parent is not null then ‘parent’
else ‘leaf’
end as number_type
from mytable n
left
join mytable p
on n.number = p.parent;
uj5u.com熱心網友回復:
您還可以使用 EXISTS
SELECT
Number,
case when exists (
select 1
from mytable t2
where t2.Parent=t1.Number)
then 'Parent' else 'Leaf' end nmbrType
FROM mytable t1
ORDER BY Number
uj5u.com熱心網友回復:
WITH recursive cte AS (
SELECT
Number,
Parent
FROM mytable
WHERE mytable.Number=3
UNION ALL
SELECT
mytable.Number,
mytable.Parent
FROM cte
INNER JOIN mytable ON mytable.Number = cte.Parent
)
SELECT * FROM cte;
首先選擇起始值 (
SELECT ... WHERE mytable.Number=3)在遞回部分選擇父(
SELECT FROM cte INNER JOIN ON ....)
參見:DBFIDDLE
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536642.html
標籤:数据库数据库
下一篇:將一些行從一個表復制到另一個新表
