簡體   English   中英

如何編寫 SQL 查詢對順序數據進行排序

[英]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分鍾。
給切片調味。

這是使用Oracle的方法。

select           "content"
from             t
start with       "previous" is null
connect by prior "next" = "id"
內容
將烤箱預熱至 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM