[英]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.