如何使用union从表中选择记录,以便第一个查询的结果将每个结果与第二个查询的相应结果连接起来?

hsgswve4  于 2021-06-20  发布在  Mysql
关注(0)|答案(13)|浏览(286)

我有一个表,表中有人名、他的父亲和母亲id以及他的年龄,我想编写一个查询,使其返回带有他/她最小孩子名字的父母的名字。这张table看起来像这样。

目前,我已经编写了返回所需结果的查询。 select a.Name, min(b.Age) from People a, People b where a.PersonID = b.Father group by a.Name union select a.Name, min(b.Age) from People a, People b where a.PersonID = b.Mother group by a.Name; 它的返回输出是这样的。

我想让它按这个顺序显示输出。 `|

sczxawaw

sczxawaw1#

--------| | Child1 | 9 | |

vxf3dgd4

vxf3dgd42#

--------|`

我希望查询执行并返回第一行父亲姓名和最小的孩子,然后返回第一行母亲姓名和最小的孩子,然后返回第二行父亲姓名和最小的孩子,然后返回第二行母亲姓名和最小的孩子,依此类推。
谢谢您。。。

p1tboqfb

p1tboqfb6#

--------| | Adam | 30 | |

ukqbszuj

ukqbszuj7#

--------| | Eve | 30 | |

dvtswwa3

dvtswwa38#

--------| | Child2 | 9 | |

xzlaal3s

xzlaal3s10#

--------| | Name | min(b.Age) | |

sqougxex

sqougxex12#

写一个子查询并给出 min(b.Age) 然后使用多个别名 order by ```
select * from
(
select a.Name, min(b.Age) age from People a INNER JOIN People b ON a.PersonID = b.Father group by a.Name
union
select a.Name, min(b.Age) from People a INNER JOIN People b ON a.PersonID = b.Mother group by a.Name;
)t
order by name,age desc

注:
避免使用逗号 `,` 要连接表,请使用 `JOIN` 而不是逗号,因为 `Join` 可以让我们更清楚地了解这两个表之间的关联

相关问题