Postgresql 与不包含任何记录的表的内部联接失败?

Postgresql 与不包含任何记录的表的内部联接失败?,postgresql,Postgresql,我有一个应用了内部联接的查询,如果右侧的联接表有一些记录,它就可以正常工作,但是当联接表有0个零记录时,内部联接不返回任何内容,我理解它是bcz,因为它没有任何内容可供联接 我想要tbl11中的记录,如果记录在tbl11中的状态为1,或者如果该记录在tbl12中存在,则它必须具有状态为1,如果tbl12.status=0,则不需要该记录 表结构 create table tbl11 ( tbl11_id serial primary key, name character varying

我有一个应用了内部联接的查询,如果右侧的联接表有一些记录,它就可以正常工作,但是当联接表有0个零记录时,内部联接不返回任何内容,我理解它是bcz,因为它没有任何内容可供联接

我想要tbl11中的记录,如果记录在tbl11中的状态为1,或者如果该记录在tbl12中存在,则它必须具有状态为1,如果tbl12.status=0,则不需要该记录

表结构

create table tbl11
(
  tbl11_id serial primary key,
  name character varying,
  status integer
)

insert into tbl11(name, status) values('Tony',1),
('Jony',1),
('Sneha',1),
('Aakriti',0)


create table tbl12
(
  tbl12_id serial primary key,
  tbl11_id integer,
  name character varying,
  status integer
)
这是我一直在尝试的东西

select t1.tbl11_id, t1.name, t1.status from tbl11 t1
inner join tbl12 t2 on t1.tbl11_id = t2.tbl11_id or t1.tbl11_id !=t2.tbl11_id
where t1.status=1 and t2.status=1
它没有输出,因为tbl12没有任何数据

然后我读了博士后的案例,并尝试了这个

select case 
    when 
        select exists (select 1 from tbl12) 
    Then 
        select t1.tbl11_id, t1.name, t1.status from tbl11 t1
        inner join tbl12 t2 on t1.tbl11_id = t2.tbl11_id or t1.tbl11_id !=t2.tbl11_id
        where t1.status=1 and t2.status=2
    else
        select tbl11_id, name, status from tbl11 where status=1
但它也给出了错误

    ERROR:  syntax error at or near "select"
LINE 3:   select exists (select 1 from tbl12) 

这是一个简单的查询

select * from tbl11 where status=1 and tbl11_id not in (select tbl11_id from tbl12 where status=0);

这是一个简单的查询

select * from tbl11 where status=1 and tbl11_id not in (select tbl11_id from tbl12 where status=0);

我很难理解你试图实现的逻辑。我认为如果您向我们展示一些样本数据以及基于这些数据的预期输出会更好。有关如何创建美观的文本表的一些提示,请参见。或者更好地设置一些表定义和示例数据。好的,我明白了。我用简单的用例修改了这个问题。请看一看@一匹没有名字的马我真的很难遵循你试图实现的逻辑。我认为如果您向我们展示一些样本数据以及基于这些数据的预期输出会更好。有关如何创建美观的文本表的一些提示,请参见。或者更好地设置一些表定义和示例数据。好的,我明白了。我用简单的用例修改了这个问题。请看一看@一匹没有名字的马谢谢!错过了我这边愚蠢的错误。对于上次查询中的错误,请在输入时输入CASE的条件。案例当选择存在时,从tbl12中选择1,然后谢谢!错过了我这边愚蠢的错误。对于上次查询中的错误,请在输入时输入CASE的条件。如果存在select,则从tbl12中选择1,然后