Если предположить, что эти 20 таблиц остаются постоянными, тогда как использовать левое внешнее соединение с каждой из таблиц. вероятно, неэффективный способ сделать это, но должен работать
select Id from
(Select PK.id, isnull(tbl1.fk,0) as fk1, isnull(tbl2.fk,0) as fk2 ... etc
from pk left join tbl1 on pk.id = tbl1.fk left join
tbl2 on pk.id = tbl2.fk ... etc) as VirtualTable
Where fk1>0 or fk2>0 ... etc