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のクエリとして受け取り、それに応じて結果を返すという違いを確認できます。
-
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
-
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) 挿