1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM table1, table2 ... WHERE table1.field = table2.field AND その他のクエリ条件 SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id 注: 上記のコードでは、2 つのテーブルが条件と同じ ID フィールド情報に関連付けられていますが、実際の開発ではこれを使用しないでください。これを実現するには、主キー制約と外部キー制約を使用するのが最適です。 2. 複数テーブルクエリにテーブルエイリアスを使用するのように: tb_demo065 a、tb_demo065_tel b から a.id、a.name、a.address、b.math、b.english、b.chinese を選択します。ここで、a.id=b.id であり、b.id='$_POST[textid]' です。 SQL言語では、テーブルの別名を2つの方法で指定できます。 SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id 2 番目の方法は、テーブル名の直後にテーブル別名を追加することです。 tb_demo065 a、tb_demo065_tel b から a.id、a.name、a.address、b.math、b.english、b.chinese を選択します。ここで、a.id=b.id です。 テーブルエイリアスを使用する際に注意すべき点
3. 複数の結果セットを結合するSQL 言語では、UNION または ALL を使用して複数の SELECT ステートメントのクエリ結果を結合できます。これらの 2 つのキーワードの使用方法は次のとおりです。 UNION: このキーワードを使用すると、複数の SELECT ステートメントのクエリ結果を結合し、重複する行を削除できます。 ALL: このキーワードは複数の SELECT ステートメントのクエリ結果をマージするために使用できますが、重複する行は削除されません。 UNION または ALL キーワードを使用して複数のテーブルを結合して出力する場合、クエリ結果の構造は同じで、データ型に互換性がある必要があります。また、UNION を使用する場合は、2 つのテーブルのフィールド数が同じである必要があります。そうでない場合、SQL ステートメントでエラーが表示されます。 例:SELECT id,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel 4つのシンプルなネストされたクエリサブクエリ: サブクエリは、単一の値を返す SELECT クエリであり、SELECT、INSERT、UPDATE、および DELETE ステートメントまたはその他のクエリ ステートメントにネストされます。サブクエリは、式を使用できる場所であればどこでも使用できます。 SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id='$_POST[test]') 内部結合: クエリ結果をWHERE句のクエリ条件として使用することを内部結合と呼びます。 5. 複雑なネストされたクエリ複数のテーブル間のネストされたクエリは、IN 述語を使用して実装できます。構文は次のとおりです。 テスト式[NOT] IN { サブクエリ } パラメータの説明: test_expression は SQL 式を参照し、subquery には結果セットのサブクエリが含まれます。複数テーブルのネストされたクエリの原則: ネストされたテーブルの数に関係なく、テーブル間に何らかの関連付けが存在する必要があり、この関連付けはクエリを実装するための WHERE 句を通じて確立されます。 6. クエリ統計におけるネストされたクエリの適用マルチテーブルクエリを実装する場合、述語 ANY、SOME、および ALL を同時に使用できます。これらの述語は定量比較述語と呼ばれ、比較演算子と組み合わせて使用して、返されるすべての値が検索条件を満たしているかどうかを判断できます。SOME 述語と ANY 述語は存在述語であり、返される値が検索条件を満たしているかどうかにのみ焦点を当てています。2 つの述語は同じ意味を持ち、互換性があります。ALL 述語は一般述語と呼ばれ、検索要件を満たす述語があるかどうかのみを考慮します。 SELECT * FROM tb_demo069_people WHERE uid IN(SELECT deptID FROM tb_demo069_dept WHERE deptName='$_POST[select]') tb_demo067 から a.id、a.name を選択、WHERE id<3)
7. サブクエリを派生テーブルとして使用する実際のプロジェクト開発プロセスでは、比較的完全な情報を持つテーブルから、いくつかのキーフィールドのみを含む情報テーブルを派生させるのによく使用されます。この目標は、次のようなサブクエリによって達成できます。 people.name、people.chinese、people.math、people.english を (SELECT name、chinese、math、english FROM tb_demo071) から選択します。 注意: サブクエリは次の規則に従う必要があります。 (1) 比較演算子によって導入された内部サブクエリには、式または列名が 1 つだけ含まれます。外部ステートメントの WHERE 句で指定された列は、内部サブクエリで指定された列と互換性がある必要があります。 8. サブクエリを式として使用するSELECT (SELECT AVG(中国語)FROM tb_demo071),(SELECT AVG(英語)FROM tb_demo071),(SELECT AVG(数学)FROM tb_demo071) FROM tb_demo071 注: サブクエリを使用する場合は、リスト項目にエイリアスを付けることをお勧めします。これにより、mysql_fetch_array() 関数を使用するときに、ユーザーがテーブル項目に値を割り当てやすくなります。 SELECT (SELECT AVG(chinese) FROM tb_demo071) AS yuwen、(SELECT AVG(english) FROM tb_demo071) AS yingyu、(SELECT AVG(math) FROM tb_demo071) AS shuxue FROM tb_demo071 9. サブクエリを使用してデータを関連付けるSELECT * FROM tb_demo072_student WHERE id=(SELECT id FROM tb_demo072_class WHERE className = '$_POST[text]') 10. 複数テーブル結合クエリSQL 文で UNION を使用すると、異なるテーブル内の条件を満たすデータ情報を同じ列に表示できます。 例:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten 注意: UNION を使用する場合は、次の 2 つの点に注意する必要があります。 11. 結合結果を並べ替えるUNION 操作の互換性のために、すべての SELECT ステートメントに ORDER BY ステートメントを含めることはできませんが、最後の SELECT ステートメントに ORDER BY 句を配置して、結果の最終的なソートされた出力を実現するという例外が 1 つあります。 例:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id UNION を使用するための条件は比較的厳しいため、このステートメントを使用する場合は、2 つのテーブルの項目数とフィールド タイプが同じかどうかに注意する必要があります。 12 条件付き結合ステートメントSELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name='Posts and Telecommunications Press' OR name='Machinery Industry Press' UNION SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name <>'Posts and Telecommunications Press' AND name <>'Machinery Industry Reprint Press' ORDER BY id 上記のステートメントは、GROUP BY ステートメントと HAVING ステートメントを使用して条件付き結合クエリを実装します。目的は、「人民郵電出版社」と「機械工業出版社」が常にリストのトップにあるようにし、それから他の出版社を輸出することです。 13. シンプルな内部結合クエリSELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1 このうち、filedlist は表示されるフィールド、INNER はテーブル間の接続が内部接続であることを意味し、table1.column1=table2.column1 は 2 つのテーブル間の接続条件を示すために使用されます。例: SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id 14 複雑な内部結合クエリ複雑な内部結合クエリは基本的な内部結合クエリに基づいており、次のようなクエリ条件が追加されています。 SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name='$_POST[text]') つまり、テーブル間の関連付けを実現する本質は、2 つのテーブル間に共通のデータ項目または同一のデータ項目があることです。2 つのテーブルは、WHERE 句または INNER JOIN ... ON ステートメントを介して接続され、クエリを実現します。 15. 外部結合を使用して複数テーブルの結合クエリを実装する(1) LEFT OUTER JOINは、テーブル同士を左結合で接続することを意味し、LEFT JOINと略されることもあります。左側のテーブルを基準とするため、左結合と呼ばれます。左側のテーブルにあるすべての情報が出力され、右側のテーブルにある条件を満たす情報のみが出力されます。条件を満たさない情報についてはNULLが返されます。 (2)RIGHT OUTER JOINは、右結合によってテーブル同士が接続されることを意味し、RIGHT JOINと略されることもあります。右側のテーブルを基準とするため、右結合と呼ばれます。右側のテーブルにあるすべての情報が出力されますが、左側のテーブルにある情報は条件を満たす情報のみが出力されます。条件を満たさない情報についてはNULLが返されます。 16. INまたはNOTINキーワードを使用して範囲を制限する例:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code BETWEEN '$_POST[text1]' AND '$_POST[text2]') IN は範囲内のクエリを指定するために使用できます。特定の範囲外でクエリを実行する必要がある場合は、代わりに NOT IN を使用できます。 17. INによって導入された相関サブクエリ例:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code = '$_POST[text]') 18. HAVING ステートメントを使用してグループ化されたデータをフィルタリングするHAVING 句は、グループまたは集計の検索条件を指定するために使用されます。HAVING は通常、GROUP BY 句とともに使用されます。SQL ステートメントに GROUP BY 句が含まれていない場合、HAVING は WHERE 句と同じように動作します。 例:SELECT name,math FROM tb_demo083 GROUP BY id HAVING math > '95' これで、MySQL マルチテーブル クエリの具体的な例に関するこの記事は終了です。MySQL マルチテーブル クエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML テーブル マークアップ チュートリアル (42): テーブル ヘッダーの水平方向の配置属性 ALIGN
>>: Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習
この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...
B-Tree インデックスに加えて、MySQL は次のインデックスも提供します。ハッシュインデックス...
クエリキャッシュ制限query_cache_limit は、単一のクエリで使用できるバッファ サイズ...
序文これまでにも、一部の SQL ステートメントを不適切に使用すると MySQL インデックスが失敗...
私はmysql ERROR 1045に遭遇し、この問題に長い時間を費やしました。私はそれを自分で書き...
検索エンジン最適化 (SEO) では実行すべきタスクが多数ありますが、その中でもコードの最適化は重要...
任意の数のステートメントを関数を通じてカプセル化することができ、いつでもどこでも呼び出して実行できま...
1. 問題の説明<br />JS を使用してフォームの送信メソッドを呼び出してフォームを...
この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...
VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...
この記事では、MySQL のトランザクション管理操作について説明します。ご参考までに、詳細は以下の通...
序文データベースの実際の使用では、データの書き込みや読み取りを同時に行わないことが必要な状況によく遭...
導入から始めず、いきなり本題に入りましょう。通常の背景ぼかし効果は次のとおりです。 プロパティを使用...
問題は、誰もが「メモリ リーク」について知っていることです。一般的なシナリオはいくつかあります。クロ...
目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...