ホームページ >データベース >mysql チュートリアル >mysqlサブクエリの簡単な紹介

mysqlサブクエリの簡単な紹介

小云云
小云云オリジナル
2018-03-15 10:41:452105ブラウズ

サブクエリの基本的な意味は、クエリ文(select文)内の特定の位置に現れる「クエリ文」です。この記事では主に mysql サブクエリの簡単な概要を説明し、皆様のお役に立てれば幸いです。

例:
mysqlサブクエリの簡単な紹介
修正後:
mysqlサブクエリの簡単な紹介

サブクエリ文「select 5000」を「全商品の平均価格を選択」に置き換えると実用的な意味になります。

  • サブクエリはメインクエリを提供します

  • メインクエリは、サブクエリが特定の結果データを取得した後にのみ実行されます

フォームでは、次のように表現できます:

  • select フィールドまたは式または、テーブル名、リンク結果からのサブクエリ[エイリアスとして]、またはサブクエリのフィールド、式、またはサブクエリの条件判断

つまり、サブクエリはこれらの場所に出現できます(それらの中で、同じ意味を持つため、実際に機能します) where);

サブクエリ、場所 (機会) で分割:

メインクエリの結果データとして フォーム
を入力 select c1,(tab2 から f1 を選択) as f11 from tab1; #ここでのサブクエリにはデータが 1 つだけ必要です (1 行 1 列、スカラー サブクエリ)
メイン クエリの条件付きデータとして select c1 from tab1 where c1 in ( select f1 from tab2 ); #ここでのサブクエリは複数のデータ (複数の行と 1 つの列、列サブクエリ) にすることができます
メインクエリのソースデータとして select c1 from (select f1 from c1, f2 from tab2) as t2 ; #ここでのサブクエリは、任意のクエリ結果 (テーブル サブクエリ) にすることができます

一般的なサブクエリ

比較演算子のサブクエリ

形式:

  • オペランド比較演算子(スカラーサブクエリ);

説明:

  • オペランドは実際には比較です。演算子、通常は単なるフィールド名です。

最高価格のアイテムを検索します。

  •   select ....  from XXX where  id > 5;

    in の以前の使用法:
select * from product  where  price = (select  max(price)  from  product );

その場合、in サブクエリは次のようになります:
  • XX  in  (值1,值2,值3,....);

    例:
  • すべてのカテゴリ名に単語「electricity」を含むすべての製品を検索します

  • XX  in  (列子查询)

任意のサブクエリを使用します

  • フォーム:

    select  *  from  product  where  protype_id  in( 
    select  protype_id  from  product_type  where  protype_name  like ‘%电%’
    );

    意味:

特定のオペランド(フィールド)が列サブクエリの任意の値の比較演算子を満たす場合、満たされているとみなされます

例:

操作数 比较运算符 any  (列子查询);

allを使用したサブクエリ:
  • 形式:

    select  *  from  tab1  where  id >  any  (select  f1  from  tab2);

    意味:

列サブクエリのすべてのデータ値に対する特定のオペランド (フィールド) のすべての比較演算子が満たされた場合にのみ条件が満たされます。 例:

操作数  比较运算符 all   (列子查询);

some のサブクエリを使用する

  • 一言で言えば、some は any の同義語です。

existsを使用したクエリ

形式:

select  *  from  tab2  where  f1  >  all  ( select  id  from   tab1 );
意味:
  • サブクエリに「データがある」場合、existsの結果はtrue、それ以外の場合はfalseです

説明:

存在するサブクエリの意味により、メインクエリではすべてが取り出されるか、何も取り出されないかのどちらかになることがよくあります。この意味(使用場面)に限定されると、基本的には実用的な意味を失います。

つまり:
  • 実際のアプリケーションでは、このサブクエリは独立したサブクエリではないことが多く、「メインクエリ」のデータソース (テーブル) との特定の関係 (通常は接続関係) を確立する必要があります。確立方法は「暗黙的」です。つまり、関係はコードには反映されませんが、内部的にはその関係の「実体」が存在します。

この暗黙的な接続方法は通常、メインクエリテーブルのデータ (フィールド) を使用してサブクエリの where 条件文に反映されます。

例:

製品テーブルのクエリカテゴリ名に「電気」という単語が含まれています

  • 結果は次のようになります:

注:
    - この種のサブクエリ ステートメントは「独立して存在する (独立して実行する)」ことはできませんが、メイン クエリと一緒に使用する必要があります
  • - 他のサブクエリは独立して実行でき、実行結果が得られます。

    - このサブクエリの条件は、メインクエリの特定のフィールドと一定の相関関係を持つように設定する必要があります。通常、この判断が 2 つのテーブルの「元の接続条件」になります
    mysqlサブクエリの簡単な紹介最後の結論:

クエリ要件の場合。結合クエリまたはサブクエリを使用して取得できますが、通常はより効率的な結合補間を使用することをお勧めします。


mysqlサブクエリの簡単な紹介関連する推奨事項:


MySQL サブクエリの詳細な紹介

mysql サブクエリとは何ですか?サブクエリを使用してフィルタリングするにはどうすればよいですか?

MySQL サブクエリの最適化

以上がmysqlサブクエリの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。