私はこのクエリの結果に完全に困惑しています:
select count(*) from my_tab mt
where mt.stat = '2473'
and mt.name= 'Tom'
and exists (select * from company_users@colink.world cu,
personnel_records@colink.world pr
where cu.user_id = pr.user_id
and mt.name = pr.name
and mt.stat = cu.stat
)
戻り値: 1
company_users@colink.world には stat='2473' のレコードが 0 件あるのに、exist に対して true を返すのはなぜですか?
このようにクエリを変更すると、0 が返されます。
select count(*) from my_tab mt
where mt.stat = '2473'
and mt.name= 'Tom'
and exists (select * from company_users@colink.world cu,
personnel_records@colink.world pr
where cu.user_id = pr.user_id
and mt.name = pr.name
and cu.stat = '2473'
)
更新さて、これは本当に奇妙です。何が起こるかを確認するために、他のデータベース (DB リンクによって参照されるもの) からクエリを実行したところ、異なる (正しい) 結果が得られました。
select count(*) from my_tab@mylink.world mt
where mt.stat = '2473'
and mt.name= 'Tom'
and exists (select * from company_users cu,
personnel_records pr
where cu.user_id = pr.user_id
and mt.name = pr.name
and mt.stat = cu.stat
)
0 を返します (予想どおり)。