繁体   English   中英

SQL:每个连接的新结果行

[英]SQL: new result row for each join

该表如下:

|child   | parent|

|John    |       |
|Ivan    | Ralph |
|Kat     | Ivan  |

我需要通过子名称检索子父条目和父祖父条目。

例如,Kat 结果应该是:

|Ivan    | Ralph |
|Kat     | Ivan  |

尝试使用此查询:

SELECT * FROM people AS c1
           LEFT JOIN people AS c2 ON c2.child = c1.parent WHERE c1.child = 'Kat'

但它将结果作为单行返回。

|child   | parent| child   | parent|
|Kat     | Ivan  | Ivan    | Ralph |

我应该如何编写查询以便它在新行中返回整数?

您不需要连接,相关子查询将执行以下操作:

SELECT * FROM people 
WHERE child = 'Kat' OR
child = (SELECT parent FROM people WHERE child = 'Kat')

假设每个孩子只有 1 个父母。
如果可以有更多的父母,则将=更改为IN

SELECT * FROM people 
WHERE child = 'Kat' OR
child IN (SELECT parent FROM people WHERE child = 'Kat')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM