Join 在psql中连接三个表并根据组成员关系保留结果
我正在使用psql,并从表A连接了三个表A、B和C 例如,结果表如下所示:Join 在psql中连接三个表并根据组成员关系保留结果,join,psql,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 |
+----+------+------+------+
| 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 |
+----+------+------+------+
+----+------+------+------+
| 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 |
+----+------+------+------+
我试图在一个id上创建c_id关系。在一个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 |
| 6 | 9 | 11 | 32 |
| 7 | 9 | 8 | 2 |
+----+------+------+------+
+----+------+------+------+
| 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语句中写入这样的条件?在join之后,您可以编写此查询。我直接创建了结果表,然后编写了一个SQL查询
SELECT * from res
WHERE a_id in (SELECT distinct a_id
FROM res
WHERE c_id=16)