SQL在同一个表中加入两列

时间:2015-10-07 21:18:24

标签: sql postgresql

我需要获取未使用的记录。我的桌子是这样的:

细分表

| id | name |
-------------
| 1  | AAA  |
| 2  | BBB  |
| 3  | CCC  |
| 4  | DDD  |

segment_segment_assoc

| id | segment_name | child_name |
----------------------------------
| 1  | AAA          | BBB        |
| 2  | AAA          | CCC        |

segment_segment_assoc 表存储段之间的父/子关系。我需要一个能够计数计数 表中的计数 segment_segment_assoc < < / strong>表。

想要这样做的方式是以某种方式将 segment_segment_assoc 表转换为单个名称类型表。例如,它应该转到this =&gt;

| name |
--------
| AAA  |
| BBB  |
| CCC  |

segment_segment_assoc.segment_name segment_segment_assoc.child_name 列被“追加”或“加入”在一起。一旦我有了这个,我就可以做一个“NOT IN”来查看 segment_segment_assoc 表中哪些段没有被“使用”。

这应该用SQL编写,但只是为了上下文,我使用的是Postgres。

先谢谢!

1 个答案:

答案 0 :(得分:1)

使用UNION应该可以解决问题:

SELECT count(*) FROM segment
WHERE name NOT IN
(
    SELECT segment_name FROM segment_segment_assoc
    UNION
    SELECT child_name FROM segment_segment_assoc
)