ホームページ  >  記事  >  データベース  >  mysqlサブクエリとは何ですか

mysqlサブクエリとは何ですか

青灯夜游
青灯夜游オリジナル
2019-06-01 14:29:428745ブラウズ

MySql のサブクエリは複数テーブル クエリの重要な部分であり、結合クエリと併用されることが多く、複数テーブル クエリの基礎となります。次の記事ではサブクエリについて説明しますので、お役に立てれば幸いです。

mysqlサブクエリとは何ですか

サブクエリとは何ですか?

サブクエリ。内部クエリとも呼ばれます。クエリが別のクエリの条件である場合、それはサブクエリと呼ばれます。サブクエリでは、いくつかの単純なコマンドを使用して強力な複合コマンドを構築できます。サブクエリは、SELECT-SQL コマンドの WHERE 句で最もよく使用されます。

サブクエリは、SELECT、SELECT…INTO ステートメント、INSERT…INTO ステートメント、DELETE ステートメント、UPDATE ステートメント内、または別のサブクエリ内にネストされた SELECT ステートメントです。

2. サブクエリの分類

サブクエリは次のカテゴリに分類されます:

1. スカラー サブクエリ: 単一の値を返します。最も単純な形式の -valued スカラー。

2. 列サブクエリ: 返される結果セットは N 行と 1 列です。

3. 行サブクエリ: 返される結果セットは、N 列からなる行です。

4. テーブル サブクエリ: 返される結果セットは N 行、N 列です。

使用できる演算子: = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 ANY IN SOME ALL EXISTS

サブクエリは A を返します。スカラー (値のみ)、行、列、またはテーブルの場合、これらのサブクエリはスカラー、行、列、テーブルのサブクエリと呼ばれます。

サブクエリがスカラー値 (単なる値) を返す場合、外側のクエリでは比較に =、>、f539a70d3ea090bac4faa80192f58ccc=、db61b3846be3b04637376be4eed99df2 記号を使用できます。 ; サブクエリがスカラー値を返さず、外側のクエリが比較演算子を使用してサブクエリの結果を比較する場合、例外がスローされます。

1. スカラー サブクエリ:

は、サブクエリが数値や文字列などの単一の値を持つスカラーを返すことを意味し、最も単純なサブクエリでもあります。返品フォーム。 = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 これらの演算子は、サブクエリのスカラー結果を比較するために使用できます。通常、サブクエリの位置は、比較式

例:

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)

2. MySQL 列サブクエリ:

は、サブクエリによって返される結果セットが N 行であることを意味します結果は通常、特定のフィールドのクエリが返すテーブルから取得されます。

You can use = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 これらの演算子は、サブクエリのスカラー結果を比較します。通常、サブクエリの位置は比較内にあります。右側の

では、INANYSOMEALL 演算子を使用できますが、 は直接使用できません = > 6d267e5fab17ea8bc578f9e7e5e1570b= 0b10350feb89d12111457853bf8dfc21 これらの演算子はスカラー結果を比較します。

例:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)

NOT IN は a8093152e673feb7aba1828c43532094 ALL のエイリアスであり、それらは同じです。

特殊なケース:

table2 が空のテーブルの場合、ALL の後の結果は TRUE になります;

サブクエリが (0, NULL, 1) などを返した場合でも、 s1 が返された結果より大きいが、空白行がある場合、ALL の後の結果は UNKNOWN になります。

注: table2 が空のテーブルの場合、次のステートメントは NULL を返します:

SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)

3. MySQL 行サブクエリ:

は次のことを指します。サブクエリ クエリによって返される結果セットは、N 列の行です。サブクエリの結果は、通常、テーブル内のデータの特定の行をクエリすることによって返される結果セットです。

例:

SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
//注:(1,2) 等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)

4. MySQL テーブル サブクエリ:

は、サブクエリによって返される結果セットが N 行のテーブル データであることを意味します。 N 列。

例:

SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)

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

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