注:SOMEとANYは同等です。以下の例では、ANYを使用します。
シナリオ:
2つのテーブルdbo.Customerとdbo.Customer1があるとしましょう。両方のテーブルの列はAgeです。 Ageがdbo.Customer1テーブルのAge列から少なくとも1つ以上の値であるdbo.Customerテーブルからすべてのレコードを取得する必要がある場合。解決策:
サブクエリとMIN関数を使用して、上記の要件のクエリを記述できます。最初にテーブルを作成しましょう。--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)サブクエリと最小関数を使用して、Ageがminより大きいdbo.Customer1テーブルのAge値であるdbo.Customerテーブルからすべてのレコードを取得します。
Select * From dbo.Customer where Age> ( Select MIN(age) from dbo.Customer1)2)必要な結果を取得するには、ANYを使用します。
サブクエリでMin関数を使用する代わりに、ANYを使用できます。 Ageがdbo.CustomerのAge列のどの値よりも大きいdbo.Customerからすべての行を取得するため、>Anyを使用します。
> ANYは、少なくとも1つの値よりも大きい、つまりより大きいことを意味します。最小値よりも大きい。
Select * From dbo.Customer where Age>ANY ( Select age from dbo.Customer1)最初のクエリで返されたものと同じレコードを取得しました。
INと等しい=ANYを使用する場合。 ANYを使用すると、=、<>、!=、>、> =、!>、<、<=、!<
ビデオなどのさまざまな比較演算子を使用できます。デモ:SQLServerで任意の/いくつかの論理演算子を使用する方法