在我的案例中如何比较表格中的记录?

时间:2017-04-11 18:45:49

标签: sql postgresql

我有两张这样的表

表A

id | name   |  type | 

1    test 1    parent
2    test 3    parent
3    test 3    child
4    test 4    parent
5    test 5    child
6    test 6    child

表B

child_id | parent_id 
  6           1
  5           2
  4           3

基本上我有两个表有错误的记录,我想通过查询找到它们。

我需要找到应该是父级但类型为子级的记录。 (在我的情况下id: 3) 和 找到应该是孩子但父母为类型的记录。 (在这种情况下为id: 4

我尝试了以下查询

select * from TabelB as b left join TableA as a on b.child_id = a.id WHERE a.type=parent

他们只会向我显示父母的类型,但我找不到不良记录。

在这种情况下,我需要找到test 3test 4记录。我不知道如何继续这个。任何人都可以帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

select *
from
    a
    inner join
    b on (a.id, a.type) in ((b.child_id, 'parent'), (b.parent_id, 'child'))