在Postgresql中输出布尔值 < P> >我想在PostgreSQL中编写一个查询,输出 true< /Cord> >如果表是另一个给定表的子表,请考虑下面的例子: TABLE A TABLE B --x: int-- --x: int-- 2 2 3 3 4

在Postgresql中输出布尔值 < P> >我想在PostgreSQL中编写一个查询,输出 true< /Cord> >如果表是另一个给定表的子表,请考虑下面的例子: TABLE A TABLE B --x: int-- --x: int-- 2 2 3 3 4,sql,postgresql,Sql,Postgresql,查询的想法是这样的: NOT EXISTS(SELECT 1 FROM B b WHERE b.x NOT IN (SELECT x FROM A)) 内部SELECT不返回任何行,因此不存在应该是TRUE,但这会返回一个错误,我做错了什么?使用连接如何 select (case when count(*) = count(a.x) then 'SUBSET' else 'NOT SUBSET' END) from b left join a on b.x = a.x 您

查询的想法是这样的:

NOT EXISTS(SELECT 1 FROM B b WHERE b.x NOT IN (SELECT x FROM A))

内部
SELECT
不返回任何行,因此
不存在
应该是
TRUE
,但这会返回一个错误,我做错了什么?

使用
连接如何

select (case when count(*) = count(a.x) then 'SUBSET' else 'NOT SUBSET' END)
from b left join
     a
     on b.x = a.x

您只是忘记了用
SELECT

select NOT EXISTS(SELECT 1 FROM B b WHERE b.x NOT IN (SELECT x FROM A));

我将使用EXCEPT运算符:

select count(*) = 0
from (
  select *
  from b
  except 
  select *
  from a
) x

我也考虑过了,但显然我需要使用
存在
不存在
进行操作。不幸的是,除了
,我不允许使用
。另外,在
不存在之前添加
选择
也会导致错误,因为它期望来自
@ani2020:no的