簡體   English   中英

在mysql的同一張表上左聯接

[英]left join on same table in mysql

我正在嘗試在同一張表上應用左聯接,但是沒有得到期望的結果。

我有這張桌子

表格-頁數

id    name        parent        status
1     AAA         0             draft
2     BBB         1             live
3     CCC         13            live
4     DDD         0             live
5     EEE         4             live
6     FFF         4             live

我希望所有具有id狀態的行都處於活動狀態,並且其父id的狀態也處於活動狀態。因此在上面的示例中,不應顯示id 2,因為其父id 1的狀態為草稿。

我做了一個sqlfiddle- http ://www.sqlfiddle.com/#!2 / d6b31 /4

任何幫助都非常歡迎。 提前致謝。

確保小提琴的模式包括所有情況。 您提供的案例不包括沒有父母就不能生活的孩子。

這應該可以完成您的期望。

SELECT a.id, a.name, a.parent, a.status
FROM pages a
LEFT JOIN pages b ON a.parent = b.id and b.status='live'
WHERE a.status='live' AND (b.status='live' OR a.parent=0)

調整案例:

(1, 'AAA', '0', 'draft'),
(2, 'BBB', '1', 'live'),
(3, 'CCC', '13', 'live'),
(4, 'DDD', '0', 'live'),
(5, 'EEE', '4', 'live'),
(6, 'FFF', '4', 'draft'),
(7, 'GGG', '0', 'draft')

暫無
暫無

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

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