这类似于我的表:
| id | parent_id | title |
|----|-----------|--------------|
| 61 | NULL | title of 61 |
| 62 | 61 | another title|
| 68 | 61 | more text |
| 75 | 61 | testing 123 |
假设我选择 ID 61。我想要这个输出(父级的所有子级):
| id | title |
|----|--------------|
| 62 | another title|
| 68 | more text |
| 75 | testing 123 |
所以,我使用以下 mysql:
SELECT a2.id, a2.title
FROM article a
JOIN article a2 ON a2.parent_id = a.id
WHERE a.id = 61
...到目前为止,一切都很好...
假设我选择 ID 75,我想要这个输出(父母和兄弟姐妹):
| id | title |
|----|--------------|
| 61 | title of 61 |
| 62 | another title|
| 68 | more text |
所以,我使用这个查询:
SELECT a2.id, a2.title
FROM article a
JOIN article a2 ON COALESCE(a2.parent_id, a2.id) = a.parent_id
WHERE a.id = 75 AND a2.id != 75
有没有办法创建这两个查询的组合,所以无论我传递什么 ID,它都会正确输出......
注意:英语不是我的第一语言,如果不清楚请随时提问
您的第一个查询可以简化为:
要将此与您的第二个查询结合起来,您可以使用 union: