[英]How to write SQL query to sort sequential data
這是一個示例表:
ID | 內容 | 以前的 | 下一個 |
---|---|---|---|
1 | 將烤箱預熱至 220 度 C。 | NULL | 2 |
2 | 土豆去皮。 | 1 | 4 |
3 | 將切好的土豆抹上油。 | 4 | 6 |
4 | 將土豆切成片。 | 2 | 3 |
5 | 給切片調味。 | 6 | NULL |
6 | 在烤箱里烤30分鍾。 | 3 | 5 |
如何以正確的順序對它們進行排序? 我試過這個:
SELECT
t1.content,
t2.content as next_step
FROM t_name t1
INNER JOIN t2
ON t1.next_id = t2.id
output的內容還是一樣的,只是加了next_step
列。 我嘗試使用SELECT content FROM t_name ORDER BY previous_id
,仍然不正確。 如何按順序對該表進行排序?
澄清 output 應該是什么(見下文)。 它可以有一個帶有正確 id 號的額外id
列,但這不是必需的。 答案提示說使用自連接,但除了嘗試遞歸 cte 之外,我無法完成它。
內容 |
---|
將烤箱預熱至 220 度 C。 |
土豆去皮。 |
將土豆切成片。 |
將切好的土豆抹上油。 |
在烤箱里烤30分鍾。 |
給切片調味。 |
MySQL 中的遞歸 cte 給出了正確的結果:
WITH RECURSIVE cte AS (
SELECT
id,
content,
next_id
FROM example_t
WHERE previous_id IS NULL
UNION ALL
SELECT
e.id,
e.content,
e.next_id
FROM example_t e
INNER JOIN cte c
on e.id=c.next_id
)
SELECT * FROM cte
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.