从一个具有嵌套关系的表中获取数据

8xiog9wr  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(244)

我是db的新手,我有一个表主题,在这个表中,我有一个外键master\u topic\u id,这个外键与同一个表主题列id相关。架构:

CREATE TABLE public.topics (
id bigserial NOT NULL,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
published_at timestamp NULL,
master_topic_id int8 NULL,
CONSTRAINT t_pkey PRIMARY KEY (id),
CONSTRAINT t_master_topic_id_fkey FOREIGN KEY (master_topic_id) REFERENCES topics(id
);

我编写了一个查询-从id=10的主题中选择*。但是如果这个记录有主主题id,我也需要通过主主题id来获取数据。我尝试使用join来实现,但join只是concat记录,但我需要将master\u topic\u id中的数据作为新行。有什么帮助吗?

ftf50wuq

ftf50wuq1#

我想你在描述:

select t.*
from topics t
where t.id = 10 or
      exists (select 1
              from topics t2
              where t2.master_topic_id = t.id and t2.id = 10
             );

但是,您可能只想:

where 10 in (id, master_topic_id)
q35jwt9p

q35jwt9p2#

使用 or 在你的 where 条件

SELECT * 
FROM topics 
WHERE id = 10 
or master_topic_id = 10

你可以用 union all

SELECT * 
FROM topics 
WHERE id = 10 

union all

SELECT * 
FROM topics 
WHERE master_topic_id = 10

相关问题