簡體   English   中英

SQL 查詢以使用先前的 id 列獲取先前的記錄

[英]SQL query to fetch previous record using previous id column

我正在嘗試編寫一個 SQL 查詢,我可以在其中查詢最新和上一條/最后兩條評論。 我有如下表結構 -

記錄表

ID 記錄名稱 最新評論 ID
1 記錄 1 3
2 記錄 2 6
3 記錄 3 7

評論表

ID 評論 上一個評論 ID
1 評論 1 NULL
2 評論 2 1
3 評論 3 2
4 評論 A NULL
5 評論 B 4
6 評論 C 5
7 評論 P NULL

記錄表引用評論表以獲取該記錄的最新評論 ID。 我想創建一個查詢,我可以在其中獲得最新和以前的評論,例如 -

記錄名稱 最新評論 上一條評論 上一條評論1
記錄 1 評論 3 評論 2 評論 1
記錄 2 評論 C 評論 B 評論 A
記錄 3 評論 P NULL NULL

我將只存儲最后兩條評論以及最新評論。

我也在探索遞歸 CTE 選項,這是我能夠創建的 -

WITH COMMENTS_HISTORY AS (
  SELECT
    Id,
    CommentBody,
    PreviousCommentId
  FROM 
    Comment
  WHERE 
    PreviousCommentId IS NULL
 
  UNION ALL
   
  SELECT
    c.Id,
    c.CommentBody,
    c.PreviousCommentId
  FROM 
    Comment c, COMMENTS_HISTORY ch
  WHERE c.PreviousCommentId = ch.Id
)
SELECT
    c.Id,
    c.CommentBody AS 'Latest Comment',
    ch.CommentBody AS 'Comment 1'
FROM 
    COMMENTS_HISTORY ch
LEFT JOIN 
    Comment c
ON
    ch.PreviousCommentId = c.Id

您只需加入comment表3次,每個評論列一次

SELECT
    r.recordname,
    c.comment AS LatestComment,
    pc.comment AS PreviousComment,
    pc1.comment AS PreviousComment1
FROM record r
LEFT JOIN comment c ON c.id = r.latestcommentid
LEFT JOIN comment pc ON pc.id = c.previouscommentid
LEFT JOIN comment pc1 ON pc1.id = pc.previouscommentid

Output

記錄名 最新評論 上一條評論 上一條評論1
記錄 1 評論 3 評論 2 評論 1
記錄 2 評論 C 評論 B 評論 A
記錄 3 評論 P null null

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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