首页 > 解决方案 > 在 psql 中加入三个表并根据组成员关系保留结果

问题描述

我正在使用 psql 并从表 A 中加入三个表 A、B 和 C。

例如结果表如下:

+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
|  1 |    5 |   12 |   16 |
|  2 |    5 |    7 |    8 |
|  3 |    5 |    6 |   21 |
|  4 |    8 |   12 |   16 |
|  5 |    8 |    3 |    9 |
|  6 |    9 |   11 |   32 |
|  7 |    9 |    8 |    2 |
+----+------+------+------+

我正在尝试通过 a_id 创建 c_id 关系。在 a_id 中有三个组 [5,8,9]。例如 c_id=16 与 a_id=[5,8] 有关系,因此 c_id=[8,21,9,32] 必须通过 a_id=[5,8] 保护。结果表应如下所示:

+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
|  1 |    5 |   12 |   16 |
|  2 |    5 |    7 |    8 |
|  3 |    5 |    6 |   21 |
|  4 |    8 |   12 |   16 |
|  5 |    8 |    3 |    9 |
+----+------+------+------+

如何在 join 语句中编写这样的条件?

标签: joinpsql

解决方案


加入后,您可以编写此查询。我直接创建了你的结果表,然后我写了一个 SQL 查询。

SELECT * from res
WHERE a_id in (SELECT distinct a_id
               FROM res
               WHERE c_id=16)

在此处输入图像描述


推荐阅读