SQL查询-PgSQL

SQL查询-PgSQL,sql,postgresql,Sql,Postgresql,要构造一个sql查询。看起来很基本,我似乎不能把我的头围绕着它。有两张类似这样的表格: Table A : call_id receive_id Table B : entity_id parent ------- ---------- --------- ------ x y x a

要构造一个sql查询。看起来很基本,我似乎不能把我的头围绕着它。有两张类似这样的表格:

Table A : call_id receive_id Table B : entity_id parent ------- ---------- --------- ------ x y x a y z y b p z z b p c call_id列和receive_id列中的元素都是entity类型。表B包含每个实体的父级。
我需要一个查询来仅从表a中选择call和receive的父项不相同的行。在示例表中,我需要除第二行以外的所有行,因为y和z有一个共同的父级b。

在我的MySQL上验证后,尝试此操作:


select a.* from
A a inner join B b1 on a.call_id=b1.entity_id
    inner join B b2 on a.receive_id=b2.entity_id
where b1.parent<>b2.parent

在子查询中,A不是scope@sqlnoob:表A在子查询的范围内。你为什么不自己去试试呢。
SELECT *
FROM A
WHERE (SELECT B.parent FROM B WHERE B.entity_id = A.call_id) 
   != (SELECT B.parent FROM B WHERE B.entity_id = A.receive_id)
;