Como usar e não está no Predicados em instruções SQL

o DENTRO e NÃO EM SQL predicados lidar com se os valores especificados (tais como OR, WA, e ID) estão contidos dentro de um determinado conjunto de valores (como os estados dos Estados Unidos).

Você pode, por exemplo, tem uma tabela que lista os fornecedores de uma mercadoria que suas compras de empresas em uma base regular. Você quer saber os números de telefone dos fornecedores localizados no Noroeste do Pacífico. Você pode encontrar esses números usando predicados de comparação, tais como aqueles mostrados no exemplo a seguir:

Empresa SELECT, PhoneFROM SUPPLIERWHERE State = 'ou' ou State = 'WA' OR State = 'ID' -

Você também pode usar o DENTRO predicado para realizar a mesma tarefa, como segue:

Select Company, PhoneFROM SUPPLIERWHERE Estado IN ( 'OR', 'WA', 'ID') -

Esta formulação é um pouco mais compacto do que o usando predicados de comparação e lógica OU. Ele também elimina qualquer possibilidade de confusão entre a lógica OU operador ea abreviatura para o estado do Oregon.

o NÃO EM versão deste predicado funciona da mesma maneira. Dizer que você tem filiais na Califórnia, Arizona e Novo México, e para evitar o pagamento de imposto sobre vendas, que pretende considerar o uso de fornecedores localizados em qualquer lugar exceto naqueles estados. Utilize a seguinte construção:

Select Company, PhoneFROM SUPPLIERWHERE Estado NOT IN ( "CA", "AZ", "NM") -

usando o DENTRO palavra-chave desta forma poupa-lhe um pouco de digitação - embora (francamente) que não é muito de uma vantagem. Você pode fazer o mesmo trabalho usando predicados de comparação.

Você pode ter outra boa razão para usar o DENTRO predicado em vez de predicados de comparação, mesmo se estiver usando DENTRO não salva muita digitação: Seus DBMS provavelmente implementa os dois métodos de forma diferente, e um dos métodos podem ser significativamente mais rápido do que o outro em seu sistema.

Você pode querer executar uma comparação de desempenho nos dois modos de exprimir inclusão (ou exclusão) um grupo e, em seguida, usar a técnica que produz o resultado mais rápido. Um DBMS com um bom otimizador provavelmente vai escolher o método mais eficiente, independentemente de qual o predicado que você usa.

o DENTRO palavra-chave é valioso em outra área, também. E se DENTRO é parte de uma subconsulta, a palavra-chave permite que você para puxar informações de duas tabelas para obter os resultados que você não pode derivar de uma única tabela. Aqui está um exemplo que mostra como uma subconsulta usa a DENTRO palavra-chave.

Suponha que você queira apresentar os nomes de todos os clientes que já compraram o produto F-35 nos últimos 30 dias. nomes de clientes estão na tabela de cliente e dados de transações de vendas é na tabela de TRANSACT. Você pode usar a seguinte consulta:

SELECIONAR FirstName, LastNameFROM CUSTOMERWHERE CustomerID IN (SELECT CustomerIDFROM TRANSACTWHERE ProductID = 'F-35'AND TransDate> = (CurrentDate - 30)) -

O interior SELECIONAR dos ninhos de mesa TRANSACT no exterior SELECIONAR da tabela de clientes. O interior SELECIONAR encontra o Identificação do Cliente números de todos os clientes que compraram o produto F-35 nos últimos 30 dias. O exterior SELECIONAR exibe os nomes e sobrenomes de todos os clientes cujas Identificação do Cliente é recuperado pelo interior SELECIONAR.

menu