Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Retorna linhas distintas comparando os resultados de duas consultas.
EXCEPT retorna linhas distintas da consulta de entrada esquerda que não são saídas pela consulta de entrada direita.
INTERSECT retorna linhas distintas que são saídas pelo operador de consultas de entrada esquerdo e direito.
Para combinar os conjuntos de resultados de duas consultas que usam EXCEPT ou INTERSECT, as regras básicas são:
O número e a ordem das colunas devem ser os mesmos em todas as consultas.
Os tipos de dados devem ser compatíveis.
Transact-SQL convenções de sintaxe
Syntax
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
Arguments
<
> query_specification | <( query_expression> )
É uma especificação de consulta ou expressão de consulta que retorna dados a serem comparados com os dados de outra especificação de consulta ou expressão de consulta. As definições das colunas que fazem parte de uma operação EXCEPT ou INTERSECT não precisam ser as mesmas. Mas, eles devem ser comparáveis através da conversão implícita. Quando os tipos de dados diferem, as regras de precedência do tipo de dados determinam o tipo de dados que é executado para comparação.
O resultado é baseado nas mesmas regras para combinar expressões quando os tipos são os mesmos, mas diferem em precisão, escala ou comprimento. Para obter mais informações, consulte Precisão, escala e comprimento (Transact-SQL).
A especificação ou expressão de consulta não pode retornar xml, text, ntext, image ou colunas de tipo não binárias definidas pelo usuário CLR porque esses tipos de dados não são comparáveis.
EXCEPT
Retorna quaisquer valores distintos da consulta à esquerda do operador EXCEPT . Esses valores retornam desde que a consulta correta não retorne esses valores também.
INTERSECT
Retorna quaisquer valores distintos que são retornados pela consulta nos lados esquerdo e direito do operador INTERSECT.
Remarks
Os tipos de dados de colunas comparáveis são retornados pelas consultas à esquerda e à direita dos operadores EXCEPT ou INTERSECT. Esses tipos de dados podem incluir tipos de dados de caracteres com agrupamentos diferentes. Quando o fazem, a comparação necessária é executada de acordo com as regras de precedência da colação. Se você não puder executar essa conversão, o Mecanismo de Banco de Dados do SQL Server retornará um erro.
Ao comparar valores de coluna para determinar linhas DISTINTAS, dois valores NULL são considerados iguais.
EXCEPT e INTERSECT retornam os nomes de coluna do conjunto de resultados que são os mesmos que os nomes de coluna que a consulta no lado esquerdo do operador retorna.
Os nomes de coluna ou aliases nas cláusulas ORDER BY devem fazer referência aos nomes de coluna retornados pela consulta do lado esquerdo.
A anulabilidade de qualquer coluna no conjunto de resultados retornado por EXCEPT ou INTERSECT é a mesma que a anulabilidade da coluna correspondente que é retornada pela consulta no lado esquerdo do operador.
Se EXCEPT ou INTERSECT for usado em conjunto com outros operadores em uma expressão, ele será avaliado no contexto da seguinte precedência:
Expressões entre parênteses
O operador INTERSECT
EXCEPT e UNION avaliados da esquerda para a direita com base na sua posição na expressão
Você pode usar EXCEPT ou INTERSECT para comparar mais de dois conjuntos de consultas. Quando você faz isso, a conversão de tipo de dados é determinada comparando duas consultas ao mesmo tempo e seguindo as regras mencionadas anteriormente de avaliação de expressão.
EXCEPT e INTERSECT não podem ser usados em definições de exibição particionadas distribuídas, notificações de consulta.
EXCEPT e INTERSECT podem ser usados em consultas distribuídas, mas são executados apenas no servidor local e não enviados para o servidor vinculado. Como tal, usar EXCEPT e INTERSECT em consultas distribuídas pode afetar o desempenho.
Você pode usar cursores estáticos e somente de avanço rápido no conjunto de resultados quando eles são usados com uma operação EXCEPT ou INTERSECT. Você também pode usar um cursor dinâmico ou controlado por conjunto de teclas juntamente com uma operação EXCEPT ou INTERSECT. Quando o fizer, o cursor do conjunto de resultados da operação é convertido num cursor estático.
Quando uma operação EXCEPT é exibida usando o recurso Gráfico Showplan no SQL Server Management Studio, a operação aparece como uma associação antisemi esquerda e uma operação INTERSECT aparece como uma semijunção esquerda.
Examples
Os exemplos a seguir mostram o uso dos INTERSECT operadores e EXCEPT . A primeira consulta retorna todos os Production.Product valores da tabela para comparação com os resultados com INTERSECT e EXCEPT.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product ;
--Result: 504 Rows
A consulta a seguir retorna quaisquer valores distintos que são retornados pela consulta nos lados esquerdo e direito do INTERSECT operador.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
A consulta a seguir retorna quaisquer valores distintos da consulta à esquerda do EXCEPT operador que também não são encontrados na consulta direita.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
A consulta a seguir retorna quaisquer valores distintos da consulta à esquerda do EXCEPT operador que também não são encontrados na consulta direita. As tabelas são invertidas em relação ao exemplo anterior.
-- Uses AdventureWorks
SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;
--Result: 0 Rows (work orders without products)
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
Os exemplos a seguir mostram como usar os INTERSECT operadores e EXCEPT . A primeira consulta retorna todos os FactInternetSales valores da tabela para comparação com os resultados com INTERSECT e EXCEPT.
-- Uses AdventureWorks
SELECT CustomerKey
FROM FactInternetSales;
--Result: 60398 Rows
A consulta a seguir retorna quaisquer valores distintos que são retornados pela consulta nos lados esquerdo e direito do INTERSECT operador.
-- Uses AdventureWorks
SELECT CustomerKey
FROM FactInternetSales
INTERSECT
SELECT CustomerKey
FROM DimCustomer
WHERE DimCustomer.Gender = 'F'
ORDER BY CustomerKey;
--Result: 9133 Rows (Sales to customers that are female.)
A consulta a seguir retorna quaisquer valores distintos da consulta à esquerda do EXCEPT operador que também não são encontrados na consulta direita.
-- Uses AdventureWorks
SELECT CustomerKey
FROM FactInternetSales
EXCEPT
SELECT CustomerKey
FROM DimCustomer
WHERE DimCustomer.Gender = 'F'
ORDER BY CustomerKey;
--Result: 9351 Rows (Sales to customers that are not female.)