【问题标题】:SQL Join Two Columns In Same TableSQL连接同一个表中的两列
【发布时间】:2015-10-07 21:18:23
【问题描述】:

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

分段表

| 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 表存储段之间的父/子关系。我需要一个能够count segment 表中有多少段notsegment_segment_assoc 表。

想要这样做的方法是以某种方式将 segment_segment_assoc 表转换为单一名称类型表。例如,它应该转向这个 =>

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

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

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

提前致谢!

【问题讨论】:

标签: sql postgresql


【解决方案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
)

【讨论】:

    猜你喜欢
    • 2013-05-11
    • 2021-11-28
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2021-05-30
    • 2022-06-10
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多