Brother,
NOT IN: Significa que não esteja entre (ou, na lista).
Por exemplo,
Você tem uma tabela de produtos, onde se tem o código do produto e o grupo deste produto.
Você tem que realizar um select e, retornar TODOS os registros, EXCETO os do grupo 99 e 100.
Daí você pode utilizar o
NOT IN para distinguir este grupo que não deseja exibir os itens.
Exemplo:
Selecionar tudo
SELECT *
FROM TB_PRODUTOS
WHERE CD_GRUPO_PROD NOT IN (99,100);
Ou, passando-se uma tabela de valores (conforme teu exmeplo acima):
Selecionar tudo
SELECT *
FROM TB_PRODUTOS
WHERE CD_GRUPO_PROD NOT IN (SELECT CD_GRUPO FROM TAB_GRUPO_PRODUTOS);
Nota importante: Por questões de performance, às vezes se faz necessária a utilização das funções "EXISTS" ou "NOT EXISTS", ao invés de NOT IN, mas, tudo isso depende do custo da tua consulta.