두 테이블이 있습니다 : teacher_lm 및 teacher. 이 테이블에는 "teacher_email"열이 있습니다.하나의 테이블에는 레코드가 있지만 다른 테이블에는 레코드가 없습니다.
필요한 것은 teacher_lm에는 있지만 teacher에는없는 전자 메일을받는 것입니다.
이 문제를 해결하기 위해 두 가지 접근 방법이 있지만 왜 그 중 하나가 결과를 제공하지 않으며 다른 하나는 많은 행을 반환하는지 이해할 수 없습니다.
먼저 하나를 842 행
SELECT DISTINCT lm.teacher_email
FROM teacher_lm as lm
WHERE NOT EXISTS (SELECT * FROM teacher as lt
WHERE lt.teacher_email = lm.teacher_email
)
두 번째 하나는 결과가 없습니다
SELECT DISTINCT lm.teacher_email FROM
teacher_lm AS lm
WHERE lm.teacher_email NOT IN
(SELECT lt.teacher_email FROM
teacher AS lt)
당신이 말해 줄 수는 내가 잘못 여기서 뭘하는지, 그리고이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
감사합니다.
감사합니다. 당신은 맞았어요 :) 지금 그것은 같은 수의 결과를주었습니다. IN 하위 쿼리는 EXIST보다 몇 년 더 오랜 시간이 걸렸습니다. 다시 한 번 감사드립니다 :) – Vika
@Vika. . . 혹시 다른 데이터베이스를 사용하는 경우에 대비하여 INIS보다 나은 EXISTS의 특성은 mysql에만 해당됩니다. 다른 데이터베이스에서는 그렇지 않을 수도 있지만, 다른 데이터베이스 엔진은 IN을 최적화하고 더 좋지는 않습니다. –