MySQL 다른 테이블에 일치하는 열이 없는 행 선택
저는 지금까지 이것을 파악할 수 없는 것 같습니다.저는 두 개의 테이블을 결합하고 B 테이블에 일치하는 열이 없는 A 테이블의 행만 선택하려고 합니다.예를 들어, 사용자 테이블과 전송된 테이블이 있다고 가정합니다.
users
테이블에는 다음과 같은 열이 있습니다.id, username
sent
테이블에는 다음과 같은 열이 있습니다.id, username
모든 행을 선택합니다.users
어디에username
존재하지 않음sent
테이블. 그렇다면.tom
인users
그리고 안에sent
그는 선택되지 않을 것입니다.만약 그가 안에users
안에 없는sent
그는 선발될 것입니다.이것을 시도해 보았지만 전혀 효과가 없었습니다.
SELECT pooltest.name,senttest.sentname
FROM pooltest,senttest
WHERE pooltest.name != senttest.sentname
일반적으로 다음을 사용합니다.NOT EXISTS
이런 유형의 쿼리에 대해
SELECT p.Name
FROM pooltest p
WHERE NOT EXISTS (SELECT s.Name
FROM senttest s
WHERE s.Name = p.Name)
대안은 a를 사용하는 것일 것입니다.LEFT OUTER JOIN
확인합니다.NULL
SELECT p.Name
FROM pooltest p
LEFT OUTER JOIN senttest s ON s.Name = p.Name
WHERE s.Name IS NULL
사용 중인 암묵적 조인 구문은 더 이상 쓸모가 없는 것으로 간주되므로 명시적 조인으로 대체해야 합니다.
다음 SQL을 사용해 보십시오.
SELECT users.username
FROM users
LEFT JOIN sent ON sent.username = users.username
WHERE sent.username IS NULL;
제 생각에 더 좋은 방법은 다음과 같습니다.
SELECT users.username
FROM users
LEFT JOIN sent ON sent.id = users.id
WHERE sent.id IS NULL;
두 ID 필드 모두 색인화되어 있으므로(기본 키라고 생각했습니다), 이 쿼리는 제가 제안한 첫 번째 쿼리보다 더 나은 최적화가 될 것입니다.
제 첫 번째 제안이 당신에게 더 좋다고 생각하실지 모르지만, 그것은 당신의 지원에 대한 요구사항에 달려있습니다.
어쩌면 이게 당신을 도울 수 있을지도..
저도 같은 문제가 있었는데 이 쿼리를 사용해서 해결했습니다.
INSERT INTO tbl1 (id,name) SELECT id,name from tbl2 where (name) not in(select name from tbl1);
이것이 당신의 문제를 해결해 주기를 바랍니다.
언급URL : https://stackoverflow.com/questions/10968767/mysql-select-rows-that-do-not-have-matching-column-in-other-table
'source' 카테고리의 다른 글
자바스크립트/jQuery에서 문자열의 픽셀 길이를 결정하시겠습니까? (0) | 2023.09.18 |
---|---|
jQuery: 변수를 선택기로 사용 (0) | 2023.09.18 |
오류: java: java.lang.예외.Initializer 오류 IntelliJ (0) | 2023.09.18 |
쿼리, 삭제 / tbody 요소의 모든 내용을 비우시겠습니까? (0) | 2023.09.18 |
jQuery에서 div 내부의 모든 HTML을 제거하고 싶습니다. (0) | 2023.09.18 |