有一个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
列中的元素都是类型实体。表B包含每个实体的父母
我需要一个查询来只选择表A中那些调用和接收的父项不相同的行。在示例表中,我想要除第二行之外的所有行,因为y和z具有共同的父b。
答案 0 :(得分:0)
试试这个(已经在我的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
答案 1 :(得分:0)
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)
;