집 >데이터 베이스 >MySQL 튜토리얼 >나열된 모든 테스트를 통과한 자동차를 어떻게 찾을 수 있나요?
테스트 목록에서 모든 테스트를 통과한 자동차를 찾아보세요
이 작업을 수행하려면 "passedtest" 테이블에 나열된 모든 테스트를 성공적으로 통과한 자동차를 "cars" 테이블에서 식별해야 합니다. 간단한 IN 문으로 단일 테스트를 통과한 자동차를 검색할 수 있지만 요구 사항은 각 자동차가 목록의 모든 테스트를 통과했는지 확인하는 것입니다.
이를 달성하기 위해 집계(GROUP BY, HAVING)와 집합 이론을 조합하여 사용할 수 있습니다.
해결책:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
설명:
"cars" 테이블의 데이터를 포함하려면 내부 문을 사용할 수 있습니다.
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname) );</code>
대안:
또 다른 옵션은 JOIN 연산을 사용하는 것입니다.
<code class="language-sql">SELECT DISTINCT c.carname FROM cars c JOIN PassedTest pt ON c.carname = pt.carname GROUP BY c.carname HAVING COUNT(*) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
위 내용은 나열된 모든 테스트를 통과한 자동차를 어떻게 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!