Obs! VISSA och ALLA är likvärdiga. Vi kommer att använda ALLA i våra exempel nedan.
Scenario :
Låt oss säga att vi har två tabeller dbo.Customer och dbo.Customer1. Båda tabellerna har kolumnen Ålder. Om du behöver hämta alla poster från dbo.Customer-tabellen där Ålder är åtminstone större än ett värde från kolumnen Ålder från tabellen dbo.Customer1.Lösning:
Vi kan använda subquery och MIN-funktion för att skriva vår fråga för ovanstående krav. Låt oss skapa tabellerna först.--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) Hämta alla poster från dbo.Customer-tabellen där Ålder är större än min Åldervärde för dbo.Customer1-tabellen genom att använda Subquery och Min-funktionen.
Select * From dbo.Customer where Age> ( Select MIN(age) from dbo.Customer1)
2) Använd ALLA för att få önskade resultat.
Vi kan använda ALLA istället för att använda Min-funktionen med subquery. Eftersom vi vill hämta alla rader från dbo.Customer där Age är större än något värde i Age-kolumnen i dbo.Customer kommer vi att använda>Any.
>ANY betyder större än minst ett värde, det vill säga större än minimum.
Select * From dbo.Customer where Age>ANY ( Select age from dbo.Customer1)
Vi fick samma poster som returnerades av vår första fråga.
Om du använder =ANY som är lika med IN. Med ALLA kan du använda olika jämförelseoperatorer som =, <> , !=,> ,>=, !> , <, <=, !<
Video Demo :Hur man använder NÅGON / NÅGON logisk operatör i SQL Server