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

別のMySQLテーブルに存在しないレコードを1つのMySQLテーブルから検索しますか?


別のテーブルに存在しない1つのMySQLテーブルからレコードを検索するには、レコードがないテーブルのサブクエリを使用できます。これは、与えられた手順を使用してよりよく理解できます-

まず、createコマンドを使用してテーブルを作成します。テーブル名は「PresentHistory」で、2つの列があります。これは次のように与えられます-

mysql> CREATE table PresentHistory
-> (
-> HisID int,
-> HisName varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)

テーブルを作成した後、2番目のテーブルにも存在するいくつかのレコードが挿入されます。これは、次のように挿入コマンドを使用して実行されます-

mysql> INSERT into PresentHistory values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PresentHistory values(2,'Bob');
Query OK, 1 row affected (0.15 sec)

レコードが正常に挿入されると、次のようにselectステートメントとともに表示されます-

mysql> SELECT * from PresentHistory;

上記のクエリを実行すると、得られる出力は次のようになります。

+-------+---------+
| HisID | HisName |
+-------+---------+
| 1     | John    |
| 2     | Bob     |
+-------+---------+
2 rows in set (0.00 sec)

ここで、createコマンドを使用して2番目のテーブルが作成されます。このテーブルの名前は「PastHistory」で、以下に示す2つの列が含まれています。

mysql> CREATE table PastHistory
-> (
-> PastId int,
-> PastName varchar(100)
-> );
Query OK, 0 rows affected (0.74 sec)

テーブルを作成した後、最初のテーブルに存在するいくつかのレコードと最初のテーブルに存在しないいくつかのレコードがPastHistoryテーブルに挿入されます。

mysql> INSERT into PastHistory values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PastHistory values(2,'Bob');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PastHistory values(3,'Carol');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into PastHistory values(4,'Jason');
Query OK, 1 row affected (0.16 sec)

現在、2番目のテーブルには4つのレコードがあります。これらのうち、2つのレコードは最初のテーブルからのものであり、2つのレコードは2番目のテーブルで異なります。

2番目のテーブルのレコードは、selectステートメントを使用して次のように表示されます-

mysql> SELECT * from PastHistory;

上記のクエリの出力は

です。
+--------+----------+
| PastId | PastName |
+--------+----------+
| 1      | John     |
| 2      | Bob      |
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+
4 rows in set (0.00 sec)

2番目のテーブルに存在しない1つのテーブルのレコードをチェックするための構文は、次のとおりです-

SELECT * from yourSecondTableName where columnNamefromSecondtable NOT IN
(SELECT columnNamefromfirsttable from yourFirstTableName);

指定されたクエリは、2番目のテーブルで異なるレコードを取得するために使用されます-

mysql> SELECT * from PastHistory where PastName not in (select HisName from
PresentHistory);

上記のクエリの出力は次のとおりです-

+--------+----------+
| PastId | PastName |
+--------+----------+
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+
2 rows in set (0.00 sec)

上記の出力から、最初のテーブルに存在しない2つのレコードが見つかったことが明らかです。


  1. MySQLの別のテーブルのデータから1つのテーブルのデータを更新しますか?

    このために、JOINと一緒にUPDATEコマンドを使用できます。 最初のテーブルを作成しましょう- mysql> create table demo54 −> ( −> firstName varchar(20), −> lastName varchar(20) −> ); Query OK, 0 rows affected (0.57 sec) 挿入コマンド-を使用して、いくつかのレコードをテーブルに挿入します。 mysql> insert into demo54 values('John'

  2. MySQLのあるテーブルから別のテーブルにデータを挿入しますか?

    あるテーブルから別のテーブルにデータを挿入するには、INSERTINTOSELECTステートメントを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1    -> (    -> Id int,    -> FirstName varchar(20)    -> ); Query OK, 0 rows affected (0.49 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> i