MySql は結合テーブルクエリを使用しますが、初心者には理解しにくい場合があります。以下の記事では、MySQL ジョイント テーブル クエリの関連内容を詳しく紹介し、参考と学習のために共有します。一緒に詳しい紹介を見てみましょう。 リレーショナル データベースでは、テーブル間にさまざまな参照や関連付けが存在することは避けられません。これらの関連付けは、主キーと外部キーを組み合わせることによって形成されます。したがって、データを取得する場合、ほとんどの場合、単一のテーブルではニーズを満たすことができず、追加のデータにはクエリに他のテーブルを追加する必要があります。これが、JOIN キーワードによって完了する操作です。
複数のテーブルをクエリする場合は、JOIN キーワードを省略し、複数のテーブルをカンマで区切ることができます。この場合、デフォルトで INNER JOIN として扱われます。例えば、 テーブル1を選択します。*、 表2.* テーブル1から、 テーブル2; は以下と同等です: テーブル1を選択します。*、 表2.* テーブル1から テーブル2の内部結合;
コンマ形式を他の結合テーブル キーワードと組み合わせると、ON 条件などを通じて結合テーブル条件が指定されたときにエラーが報告されることに注意してください。
left_tblを選択します。* left_tbl から right_tbl を左結合し、 left_tbl.id = right_tbl.id にします。 right_tbl.id が NULL の場合; この方法を使用すると、条件を満たさない右側のテーブル内のレコードを簡単に除外できます。
t1.名前、t2.給与を選択します 従業員 AS t1 から info AS t2 に内部結合し、 t1.name = t2.name にします。 t1.名前、t2.給与を選択します 従業員 t1 から、情報 t2 を t1.name = t2.name に内部結合します。
SELECT * FROM (SELECT 1, 2, 3) AS t1;
a LEFT JOIN b USING (c1, c2, c3)
JOIN の例をいくつか示します。 テーブル1、テーブル2から*を選択します。 SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id; SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id; SELECT * FROM table1 LEFT JOIN table2 USING (id); SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id table3 を table2.id = table3.id で左結合します。
次の例を考えてみましょう。 テーブル t1 (i INT、j INT) を作成します。 テーブル t2 (k INT, j INT) を作成します。 t1 VALUES(1, 1) に挿入します。 t2 VALUES(1, 1) に挿入します。 t1 から * を選択し、 t2 を自然結合します。 SELECT * FROM t1 JOIN t2 USING (j); クエリ結果:
同じ名前の列は結果に 1 回だけ表示され、すべて同じ値を持つレコードになります。 2 つのテーブルに新しいレコードを挿入して、それらの j を異なるものにし、テストします。 mysql> t1 に値 (2, 2) を挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> t2 に値 (2, 3) を挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> t1 から * を選択し、t2 を自然結合します。 +------+------+------+ | j | 私 | k | +------+------+------+ | 2 | 2 | 1 | +------+------+------+ セット内の 1 行 (0.00 秒)
a LEFT JOIN b USING (c1, c2, c3) a LEFT JOIN b は a.c1 = b.c1 かつ a.c2 = b.c2 かつ a.c3 = b.c3 で結合されます USING の場合の戻り値: 合体(a.c1, b.c1)、合体(a.c2, b.c2)、合体(a.c3, b.c3) ON は次を返します:
ON ステートメントでは、その操作テーブル (オペランド) 内のテーブルのみを参照できます。 テーブル t1 (i1 INT) を作成します。 テーブル t2 (i2 INT) を作成します。 テーブル t3 (i3 INT) を作成します。 上記のテーブルの場合、次のクエリはエラーを報告します。 mysql> SELECT * FROM t1 JOIN t2 ON (i1 = i3) JOIN t3; エラー 1054 (42S22): 'on 句' に不明な列 'i3' があります 次のクエリは機能します: mysql> SELECT * FROM t1 JOIN t2 JOIN t3 ON (i1 = i3); 空のセット (0.00 秒) なぜなら、現在 t3 は ON ステートメントの動作範囲内にあるからです。 関連リソース
要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Linux nslookup コマンドの使用方法の詳細な説明
>>: アイデアコンパイラvueインデントエラー問題シナリオの分析
私は最近、多くの音楽に特化した Linux ディストリビューションの 1 つである Audiovis...
1. インストールパッケージを保存する場所に移動しますcd /home/lnmp 2. MySQL ...
まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...
Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...
Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...
質問Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には...
目次1. リテラル1.1 数値リテラル1.2 浮動小数点リテラル1.3 特別な値1.4 文字列リテラ...
環境: CentOS 7公式ドキュメント: http://supervisord.org/インストー...
目次背景実装のアイデア成果を達成する背景最近取り組んでいるプロジェクトは、Vue2 で構築されたプロ...
01. 無限フォントのダウンロード02. バンダフォントのダウンロード03. ロールアップフォントの...
Linux と Unix はマルチユーザー オペレーティング システムであるため、ファイルの権限と所...
2つの異なるサーバー間の転送ポート転送を有効にするまず、デフォルトでは無効になっている IP 転送機...
MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...
序文 [root@localhost ~]# cat /etc/fstab # #/etc/fsta...
目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...