MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

RIGHTJOINまたはLEFTJOINのクエリを記述しているときに、キーワード「RIGHT」または「LEFT」を使用しない場合、MySQLは何を返しますか?


どちらの場合も、つまりクエリで「RIGHT」または「LEFT」キーワードを使用しない場合、MySQLは結果をINNERJOINクエリとして返します。これは、RIGHT、LEFT、およびINNER JOINの唯一の違いが、RIGHTまたはLEFTのキーワードであるためです。それを理解するために、次のデータを持つtbl_1とtbl_2という名前の2つのテーブルの例を取り上げています-

mysql> Select * from tbl_1;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav |
| 2  | Rahul  |
| 3  | Raman  |
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

これで、キーワードRIGHTを使用したRIGHT JOINのクエリは、次のようになります-

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id   | id |
+------+----+
| 4    | A  |
| NULL | B  |
| NULL | C  |
| NULL | D  |
+------+----+
4 rows in set (0.00 sec)

現在、次のクエリでは、キーワードRIGHT-

を使用していません。
mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

上記の結果セットから、キーワード「RIGHT」を使用せずに、MySQLがそれをINNER JOINのクエリとして受け取り、それに応じて結果を返すという違いを確認できます。

これで、キーワードLEFTを使用したLEFT JOINのクエリは、次のようになります-

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id   |
+----+------+
| 1  | NULL |
| 2  | NULL |
| 3  | NULL |
| 4  | A    |
+----+------+
4 rows in set (0.02 sec)

現在、次のクエリでは、キーワードLEFT-

を使用していません。
mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

上記の結果セットから、キーワード「LEFT」を使用せずに、MySQLがそれをINNER JOINのクエリとして受け取り、それに応じて結果を返すという違いを確認できます。


  1. MySQLテーブルを作成するときは、予約済みのキーワード「Key」を使用してください

    予約キーワード「キー」を使用するには、バックティック記号の概念を使用します。ここでは、この例では、列名の前後にバックチェック記号が必要な列名キーを使用しています。 まずテーブルを作成しましょう- mysql> create table DemoTable (    `Key` int ); Query OK, 0 rows affected (0.67 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(100); Query OK, 1 row affecte

  2. MySQLテーブルにない値をデータベースに照会しますか?

    このために、WHERE NOTEXISTSとともにUNIONALLを使用し、NOT INを実装して、テーブルにすでに存在する値を無視することができます。 UNION ALLでSELECTを使用して、まだテーブルにない値を追加します。 まずテーブルを作成しましょう- mysql> create table DemoTable1918    (    Value int NOT NULL AUTO_INCREMENT PRIMARY KEY    ); Query OK, 0 rows affected (0.00 sec) 挿