mysql - 从表中选择行加上与一个查询中所选行相关的行

标签 mysql join union

是否有一种方法可以从表中检索一组行,同时还包括(连接、并集?)同一个表中其 id 在初始选择中引用的行?这是一个例子。

ID       Name       Surname         UserID    ParentID
---------------------------         ------------------
1        Daniel     Brown           1         0
2        John       Brown           2         4
3        Andrew     Brown           3         5
4        Simon      Smith           4         0
5        Peter      Smith           5         1

所以我想检索姓氏为 Brown 的所有行,以及与父值相关的所有行。在此示例中,将返回所有行。

如果可能的话,我想在一个查询中完成此操作。请注意,我也不想返回 Peter Smith 的父行 (1)。只是初始搜索(所有布朗一家)以及与初始搜索相关的 parent 。

最佳答案

您可以尝试以下 -

<强> DEMO

select id,name,surname,parent from tablename
where surname='Brown'
union 
select a1.id,a1.name,a1.surname,a1.parent from tablename a join tablename a1
on a.parent=a1.id
where a.surname='Brown'

输出:

id  name    surname parent
1   Daniel  Brown   0
2   John    Brown   5
3   Andrew  Brown   4
4   Simon   Smith   0
5   Peter   Smith   1

关于mysql - 从表中选择行加上与一个查询中所选行相关的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202489/

相关文章:

mysql - 合并后的 codeigniter 分页

c# - 包含数组的结构体的大小

php - 检查前一个 MySQL 查询的状态并执行下一个查询

PHP/MySQL - 在哪里可靠地处理插入自动重新请求(锁定表) - 客户端还是服务器?

php - 基于某种条件的插入(Mysql)

php - 如果某些产品有折扣价(SQL),如何按价格对产品进行排序?

mysql - SQL - GROUP BY 有计数,连接多个表

mysql - 在可以加入的地方加入,否则不加入

无法通过连接访问关系的 MySQL 查询

MYSQL 将两个结果行(失败队和获胜队)合并到一列中