SQLiteのサブクエリ2024 年の最新の入門チュートリアル。このコースでは SELECTステートメントのサブクエリ,例,INSERT文の副問合せ,例,UPDATE文のサブクエリ,例,DELETEステートメントの副照会,例, について学習できます。
サブクエリまたはネストされたクエリまたは内部クエリが別のSQLiteのクエリ内のクエリWHERE句に埋め込まれています。
副問合せを使用すると、データはさらに、取得するデータを制限する条件として、メインクエリで使用されます返します。
サブクエリは、SELECT、INSERT、UPDATEで使用され、文は、このような=として使用する演算子を伴うことがあるDELETEすることができ、<、>、> =、<=、IN、BETWEEN好きです。
以下に従わなければなりませんサブクエリいくつかのルールです。
サブクエリは括弧で囲まなければなりません。
副問合せのSELECT句にのみ、メインクエリ内の複数の列がない限り、選択した列のサブクエリ比較を1列を持つことができます。
メイン・クエリは、ORDER BYを使用することができますが、ORDER BYは、サブクエリで使用することはできません。 あなたがサブクエリでGROUP BYを使用することができ、ORDER BYのと同じように機能します。
サブクエリが1行以上を返し、唯一のそのようなIN演算子として多値演算子で使用することができます。
オペレータは、サブクエリで使用することができないとの間には、しかしながら、BETWEENサブクエリ内で使用することができます。
サブクエリは、通常のSELECTステートメントで使用されています。 次のように基本的な構文は次のとおりです。
SELECTカラム名[、column_nameに] TABLE1 FROM [、table2の] WHEREのcolumn_name OPERATOR (SELECTカラム名[、column_nameに] TABLE1 FROM [、table2の] [WHERE])
仮定COMPANYテーブルには、次のレコードを持っています。
IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
それでは、SELECT文の副問合せを調べてみましょう:
sqliteの> SELECT * 会社から WHERE ID IN(SELECT ID 会社から WHERE SALARY> 45000);
これにより、以下の結果が得られます。
IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
サブクエリは、INSERT文でも使用することができます。 INSERT文は、別のテーブルにデータを返すために、サブクエリを使用しています。 サブクエリで選択されたデータは、任意の文字、日付、または数値の機能変更することができます。
次のように基本的な構文は次のとおりです。
TABLE_NAME。INSERT INTO [(column1の[、COLUMN2])] SELECT [* | column1の[、COLUMN2] TABLE1 FROM [、table2の] [VALUE演算子]
COMPANY_BKP COMPANYテーブル構造を仮定し、同様の、および作成するために、同じCREATE TABLEを使用することができ、ちょうどテーブルCOMPANY_BKPの名前を変更しました。 今COMPANY_BKPに会社全体の表をコピー、次のように、構文は次のとおりです。
sqliteの> INSERT INTO COMPANY_BKP COMPANY SELECT * FROM WHERE ID IN(SELECT ID )会社から。
サブクエリは、UPDATE文で使用することができます。 サブクエリUPDATEステートメントを使用する場合は、単一または複数の列がテーブルに更新されます。
次のように基本的な構文は次のとおりです。
UPDATEテーブル SET COLUMN_NAME = NEW_VALUE [WHERE OPERATOR [VALUE] (SELECT COLUMN_NAME )TABLE_NAME FROM [WHERE)]
我々はCOMPANY_BKPテーブル、バックアップCOMPANYテーブルがあるとします。
COMPANY表の以下の例すべてのAGEよりか、元の0.50倍を更新27クライアントのSALARYに等しいです:
sqliteの> UPDATE会社 SET SALARY = SALARY * 0.50 WHERE AGE IN(COMPANY_BKP FROM AGEを選択 WHERE AGE> = 27);
これは、以下のように表の最後COMPANYレコードの2行に影響します。
IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア10000.0 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス42500.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
前述のようにサブクエリはちょうど他の文と同様に、DELETEステートメントで使用することができます。
次のように基本的な構文は次のとおりです。
TABLE_NAME FROM DELETE [WHERE OPERATOR [VALUE] (SELECT COLUMN_NAME )TABLE_NAME FROM [WHERE)]
我々はCOMPANY_BKPテーブル、バックアップCOMPANYテーブルがあるとします。
次の例では、すべての顧客レコード以上AGE 27 COMPANYテーブルを削除します。
sqliteの>会社からDELETE WHERE AGE IN(COMPANY_BKP FROM AGEを選択 WHERE AGE> 27);
これは、以下のように表の最後COMPANYレコードの2行に影響します。
IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス42500.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0