SQLチュートリアル

SQL HOME SQLイントロ SQL構文 SQL Select SQL Select Distinct SQL Where SQL And、Or、Not SQLの順序 SQL Insert Into SQLNull値 SQLアップデート SQL削除 SQL Select Top SQLの最小値と最大値 SQLカウント、平均、合計 SQL Like SQLワイルドカード SQL入力 SQLの間 SQLエイリアス SQL結合 SQL内部結合 SQL左結合 SQL右結合 SQL完全結合 SQL自己結合 SQLユニオン SQL Group By SQLを持っている SQLが存在する SQL Any、All SQL Select Into SQL Insert Into Select SQLケース SQLNull関数 SQLストアドプロシージャ SQLコメント SQL演算子

SQLデータベース

SQL Create DB SQLドロップDB SQLバックアップDB SQLテーブルの作成 SQLドロップテーブル SQL ALTER TABLE SQLの制約 SQLはNullではありません SQL独自 SQL主キー SQL外部キー SQLチェック SQLのデフォルト SQLインデックス SQL自動インクリメント SQLの日付 SQLビュー SQLインジェクション SQLホスティング SQLデータ型

SQLリファレンス

SQLキーワード MySQL関数 SQLServerの機能 MSAccess関数 SQLクイック参照

SQLの

SQLの例 SQLクイズ SQL演習 SQL証明書

SQLANYおよびALL演算子


SQLANYおよびALL演算子

ANYand演算子を使用するALLと、単一の列の値と他の値の範囲を比較できます。


SQLANY演算子

ANYオペレーター

  • 結果としてブール値を返します
  • サブクエリ値のいずれかが条件を満たす場合にTRUEを返します

ANY範囲内のいずれかの値に対して演算が真の場合、条件が真になることを意味します。

任意の構文

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
 
FROM table_name
 
WHERE condition);

注:演算子は、標準の比較演算子(=、<>、!=、>、> =、<、または<=)である必要があります。


SQLALL演算子

ALLオペレーター

  • 結果としてブール値を返します
  • すべてのサブクエリ値が条件を満たす場合にTRUEを返します
  • SELECTWHEREおよびHAVINGステートメントとともに使用されます

ALL範囲内のすべての値に対して演算が真である場合にのみ、条件が真になることを意味します。 

SELECTを使用したALL構文

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

WHEREまたはHAVINGを使用したALL構文

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
 
FROM table_name
 
WHERE condition);

注:演算子は、標準の比較演算子(=、<>、!=、>、> =、<、または<=)である必要があります。


デモデータベース

以下は、Northwindサンプルデータベースの「Products」テーブルからの抜粋です。

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35
6 Grandma's Boysenberry Spread 3 2 12 - 8 oz jars 25
7 Uncle Bob's Organic Dried Pears 3 7 12 - 1 lb pkgs. 30
8 Northwoods Cranberry Sauce 3 2 12 - 12 oz jars 40
9 Mishi Kobe Niku 4 6 18 - 500 g pkgs. 97

そして、「OrderDetails」テーブルからの選択:

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40
6 10250 41 10
7 10250 51 35
8 10250 65 15
9 10251 22 6
10 10251 57 15


SQLANYの例

次のSQLステートメントは、OrderDetailsテーブルでQuantityが10に等しいレコードを検出した場合にProductNameを一覧表示します(Quantity列の値が10であるため、これはTRUEを返します)。

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

次のSQLステートメントは、OrderDetailsテーブルで99より大きいQuantityのレコードが見つかった場合にProductNameを一覧表示します(Quantity列の値が99より大きいため、これはTRUEを返します)。

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);

次のSQLステートメントは、OrderDetailsテーブルでQuantityが1000より大きいレコードを検出した場合にProductNameを一覧表示します(Quantity列に1000より大きい値がないため、これはFALSEを返します)。

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);

SQLALLの例

次のSQLステートメントは、すべての製品名をリストしています。

SELECT ALL ProductName
FROM Products
WHERE TRUE;

次のSQLステートメントは、OrderDetailsテーブルのすべてのレコードのQuantityが10の場合、ProductNameを一覧表示します。Quantity列には多くの異なる値(10の値だけでなく)があるため、これはもちろんFALSEを返します。

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);