Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar o operador lógico ANY/SOME no SQL Server - Tutorial SQL Server/TSQL Parte 127

QUALQUER operador lógico retornará VERDADEIRO se qualquer um de um conjunto de comparações for VERDADEIRO. ANY compara um valor escalar com um único conjunto de valores de coluna.

Observação:SOME e ANY são equivalentes. Vamos usar ANY em nossos exemplos abaixo.

Cenário:

Digamos que temos duas tabelas dbo.Customer e dbo.Customer1. Ambas as tabelas possuem a coluna Idade. Se você precisar obter todos os registros da tabela dbo.Customer onde Age é pelo menos maior que um valor da coluna Age da tabela dbo.Customer1.

Solução:

Podemos usar a subconsulta e a função MIN para escrever nossa consulta para o requisito acima. Vamos criar as tabelas primeiro.

--Create Customer Table
Create table dbo.Customer
 (Id int,
  FName VARCHAR(50),
  LName VARCHAR(50),
  CountryShortName CHAR(2),
  Age tinyint)
GO
--Insert Rows in dbo.Customer Table
insert into dbo.Customer
Values (
1,'Raza','M','PK',10),
(2,'Rita','John','US',12),
(3,'Sukhi','Singh',Null,25),
(4,'James','Smith','CA',60),
(5,'Robert','Ladson','US',54),
(6,'Alice','John','US',87)

--Create dbo.Customer1 table
Create table dbo.Customer1
 (Id int,
  FName VARCHAR(50),
  LName VARCHAR(50),
  CountryShortName CHAR(2),
  Age tinyint)
GO
--Insert rows in dbo.Customer1 Table
insert into dbo.Customer1
Values
(7,'Raza','M','US',33),
(8,'Dita','M','US',15),
(9,'Adita','M','US',29)
 
1) Obtenha todos os registros da tabela dbo.Customer onde Age é maior que min Valor de idade da tabela dbo.Customer1 usando a função Subquery e Min.
 
Select * From dbo.Customer
where Age> ( Select MIN(age) from dbo.Customer1)
 
 
 
 2) Use ANY para obter os resultados necessários.
Podemos usar ANY em vez de usar a função Min com subconsulta. Como queremos obter todas as linhas de dbo.Customer onde Age é maior que qualquer valor da coluna Age em dbo.Customer, usaremos>Any.
>ANY significa maior que pelo menos um valor, ou seja, maior que o mínimo.

Select * From dbo.Customer
where Age>ANY ( Select age from dbo.Customer1)
 
 
 Obtivemos os mesmos registros que foram retornados pela nossa primeira consulta.
Se você usar =ANY que é igual a IN. Com ANY você pode usar diferentes operadores de comparação como =, <> , !=,> ,>=, !> , <, <=, !<



Video Demo:Como usar o operador lógico ANY / SOME no SQL Server