En mi trabajo rutinario debo verificar que no me llegue información de un cliente que no esté registrada en el maestro de clientes para lo cual realicé una consulta en sql server que era así:
select count(*) , clie_id from registros
where clie_id not in (select cod_cliente from clientes)
group by clie_id
Me funcionaba bien hasta que un día me percate que no me estaba mostrando bien la información por lo que supuse que existe un límite en la cantidad de elementos que se pueden contener dentro de in()
La solución (y más eficiente) es:
select cant, clie_id from
(
select count(*) cant, clie_id, cod_cliente from registros a
left outer join clientes b on a.clie_id=b.cod_cliente
group by clie_id, cod_cliente
) x
where cod_cliente is null