반응형
Mysql: 테이블에서 다른 테이블에 없는 행을 선택합니다.
한 테이블에서 다른 테이블에 표시되지 않는 모든 행을 선택하려면 어떻게 해야 합니까?
표 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
표 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
표 2에 없는 표 1 행의 출력 예:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
아마도 다음과 같은 것이 효과가 있을 것입니다.
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
열 이름을 기준으로 하위 선택을 수행해야 합니다.*
.
예를 들어 다음과 같은 경우id
두 테이블에 공통되는 필드에는 다음과 같은 작업을 수행할 수 있습니다.
SELECT * FROM Table1 WHERE id NOT IN (SELECT id FROM Table2)
자세한 예는 MySQL 서브쿼리 구문을 참조하십시오.
다른 설명에서 설명한 바와 같이 300개의 열이 있고 모든 열을 비교하려면(열이 모두 동일한 이름이라고 가정함)NATURAL LEFT JOIN
모든 결합 조건을 수동으로 입력할 필요가 없도록 두 테이블 사이의 일치하는 모든 열 이름에 암묵적으로 결합합니다.
SELECT a.*
FROM tbl_1 a
NATURAL LEFT JOIN tbl_2 b
WHERE b.FirstName IS NULL
SELECT *
FROM Table1 AS a
WHERE NOT EXISTS (
SELECT *
FROM Table2 AS b
WHERE a.FirstName=b.FirstName AND a.LastName=b.Last_Name
)
EXISTS
도움이 될 거야...
표준 LEFT JOIN을 사용하면 이 문제를 해결할 수 있으며, 조인 시 필드가 색인화된 경우
또한 더 빨라야 합니다.
SELECT *
FROM Table1 as t1 LEFT JOIN Table2 as t2
ON t1.FirstName = t2.FirstName AND t1.LastName=t2.LastName
WHERE t2.BirthDate Is Null
이 간단한 쿼리를 사용해 보십시오.완벽하게 작동한다.
select * from Table1 where (FirstName,LastName,BirthDate) not in (select * from Table2);
시험:
SELECT * FROM table1
LEFT OUTER JOIN table2
ON table1.FirstName = table2.FirstName and table1.LastName=table2.LastName
WHERE table2.BirthDate IS NULL
옵션은 다음과 같습니다.
SELECT A.*
FROM TableA as A
LEFT JOIN TableB as B
ON A.id = B.id
Where B.id Is NULL
Oracle에서는 다음과 같이 대응했습니다.
SELECT a.*
FROM tbl1 a
MINUS
SELECT b.*
FROM tbl2 b;
SELECT a.* FROM
FROM tbl_1 a
MINUS
SELECT b.* FROM
FROM tbl_2 b
언급URL : https://stackoverflow.com/questions/11767565/mysql-select-rows-from-a-table-that-are-not-in-another
반응형
'programing' 카테고리의 다른 글
jQuery 글로벌 키 누르기 이벤트 메서드 호출 vuejs 메서드가 예상대로 작동하지 않습니다.왜요? (0) | 2023.01.23 |
---|---|
JavaScript를 사용하여 브라우저의 뒤로 버튼을 정지하려면 어떻게 해야 합니까? (0) | 2023.01.23 |
Jhipster에서 JDL을 사용할 때 오류 발생 (0) | 2023.01.23 |
최상위 레벨에서 비동기/대기 기능을 사용하려면 어떻게 해야 합니까? (0) | 2023.01.23 |
ID 필드별로 Vuex에 저장된 개체 배열에서 항목을 가져오려면 어떻게 해야 합니까? (0) | 2023.01.23 |