MySQLチュートリアル

MySQLホーム MySQLイントロ MySQL RDBMS

MySQL SQL

MySQL SQL MySQL SELECT MySQL WHERE MySQL AND、OR、NOT MySQL ORDER BY MySQL INSERT INTO MySQLNULL値 MySQL UPDATE MySQLDELETE MySQL LIMIT MySQLMINおよびMAX MySQL COUNT、AVG、SUM MySQL LIKE MySQLワイルドカード MySQL IN MySQL BETWEEN MySQLエイリアス MySQLが参加します MySQL内部結合 MySQL LEFT JOIN MySQL RIGHT JOIN MySQL CROSS JOIN MySQL自己結合 MySQL UNION MySQL GROUP BY MySQL HAVING MySQLが存在します MySQL ANY、ALL MySQL INSERT SELECT MySQLケース MySQLヌル関数 MySQLコメント MySQL演算子

MySQLデータベース

MySQL Create DB MySQLドロップDB MySQLテーブルの作成 MySQLドロップテーブル MySQL ALTER TABLE MySQLの制約 MySQLはNullではありません MySQLユニーク MySQLプライマリキー MySQL外部キー MySQLチェック MySQLのデフォルト MySQL CreateIndex MySQL自動インクリメント MySQLの日付 MySQLビュー

MySQLリファレンス

MySQLデータ型 MySQL関数

MySQLの

MySQLの例 MySQLクイズ MySQL演習

MySQLANYおよびALL演算子


MySQLのANYおよびALL演算子

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


ANY演算子

ANYオペレーター

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

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

任意の構文

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

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


ALL演算子

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);