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