我有两张这样的表
表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 3
和test 4
记录。我不知道如何继续这个。任何人都可以帮我吗?非常感谢!
答案 0 :(得分:2)
select *
from
a
inner join
b on (a.id, a.type) in ((b.child_id, 'parent'), (b.parent_id, 'child'))