Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

한 MySQL 테이블에서 다른 테이블에 존재하지 않는 레코드를 찾으십니까?

<시간/>

다른 테이블에 존재하지 않는 한 MySQL 테이블의 레코드를 찾으려면 레코드가 없는 테이블에 대한 하위 쿼리를 사용할 수 있습니다. 이것은 주어진 단계를 사용하여 더 잘 이해할 수 있습니다 -

먼저 create 명령을 사용하여 테이블을 만듭니다. 테이블 이름은 'PresentHistory'이며 두 개의 열이 있습니다. 이것은 다음과 같이 주어집니다 -

mysql> CREATE table PresentHistory-> (-> HisID int,-> HisName varchar(100)-> );쿼리 OK, 영향을 받은 행 0개(0.54초)

테이블을 만든 후 두 번째 테이블에도 표시될 일부 레코드가 삽입됩니다. 이것은 다음과 같이 삽입 명령의 도움으로 수행됩니다 -

mysql> INSERT into PresentHistory values(1,'John');Query OK, 1행 영향(0.13초)mysql> INSERT into PresentHistory values(2,'Bob');Query OK, 1행 영향(0.15초) )

레코드를 성공적으로 삽입하면 다음과 같이 select 문과 함께 표시됩니다. -

mysql> SELECT * from PresentHistory;

위의 쿼리를 실행한 후 얻은 결과는 다음과 같습니다.

+-------+---------+| 히스아이디 | 그의 이름 |+-------+---------+| 1 | 존 || 2 | 밥 |+----+---------+세트의 행 2개(0.00초)

이제 create 명령을 사용하여 두 번째 테이블이 생성됩니다. 이 테이블의 이름은 'PastHistory'이며 아래와 같이 두 개의 열을 포함합니다.

mysql> CREATE table PastHistory-> (-> PastId int,-> PastName varchar(100)-> );Query OK, 0개의 행이 영향을 받음(0.74초)

테이블 생성 후 첫 번째 테이블에 있는 일부 레코드와 첫 번째 테이블에 없는 레코드가 PastHistory 테이블에 삽입됩니다.

mysql> INSERT into PastHistory values(1,'John');Query OK, 1개의 row가 영향을 받았습니다(0.13초)mysql> INSERT into PastHistory values(2,'Bob');Query OK, 1 row가 영향을 받았습니다(0.13초). )mysql> INSERT into PastHistory values(3,'Carol');Query OK, 1개의 row가 영향을 받았습니다. /사전> 

이제 두 번째 테이블에는 4개의 레코드가 있습니다. 이 중 2개의 레코드는 첫 번째 테이블의 레코드이고 2개의 레코드는 두 번째 테이블의 레코드입니다.

두 번째 테이블의 레코드는 다음과 같이 select 문의 도움으로 표시됩니다. -

mysql> SELECT * from PastHistory;

위 쿼리의 출력은

+--------+----------+| 과거 ID | 이름 |+--------+----------+| 1 | 존 || 2 | 밥 || 3 | 캐롤 || 4 | Jason |+--------+----------+4행 세트(0.00초)

두 번째 테이블에 존재하지 않는 한 테이블의 레코드를 확인하는 구문은 다음과 같습니다. -

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

주어진 쿼리는 두 번째 테이블에서 구별되는 레코드를 가져오는 데 사용됩니다 -

mysql> SELECT * from PastHistory where PastName not in (Select HisName fromPresentHistory);

위 쿼리의 출력은 다음과 같습니다 -

+--------+----------+| 과거 ID | 이름 |+--------+----------+| 3 | 캐롤 || 4 | Jason |+--------+----------+2행 세트(0.00초)

위의 출력에서 ​​첫 번째 테이블에 없는 두 개의 레코드를 찾은 것이 분명합니다.