如何在PostgreSQL中将两个查询结果合并为两列单表
解决方案
其实你完全不需要分开执行两个查询再合并,直接通过三表关联查询就能一次性得到你想要的两列结果,利用mainpk表作为中间关联桥梁就好:
SELECT student.name1, domain.name2 FROM mainpk JOIN student ON mainpk.id1 = student.id1 JOIN domain ON mainpk.id2 = domain.id2;
为什么这个方法可行?
mainpk表本身就是用来关联student和domain的中间表,每一行的id1和id2刚好对应一个学生和他关联的领域。我们直接以mainpk为基础,分别关联student表拿到学生姓名,关联domain表拿到领域名称,就能自然得到一一对应的两行数据,和你期望的输出完全一致:
| name1 | name2 |
|---|---|
| ishi | python |
| ishi | scala |
| ishi | java |
| sangee | java |
| sangee | c# |
如果非要用你之前的两个查询来合并(不推荐,因为多此一举),那你需要给每个查询加一个行号,然后通过行号关联,但这种方法既麻烦又容易出错,远不如直接三表关联高效准确。
内容的提问来源于stack exchange,提问作者ishika
相关产品推荐
相关产品推荐

