在psql中联接三个表并根据组成员身份保留结果

时间:2019-05-23 14:44:01

标签: join 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]有关系,因此必须通过a_id = [5,8]保护c_id = [8,21,9,32]。生成的表应如下所示:

+----+------+------+------+
| 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语句中编写这样的条件?

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here