>데이터 베이스 >MySQL 튜토리얼 >데이터베이스 테이블에서 모든 테스트를 통과한 자동차를 선택하는 방법은 무엇입니까?

데이터베이스 테이블에서 모든 테스트를 통과한 자동차를 선택하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-14 10:19:49587검색

How to Select Cars That Passed All Tests from a Database Table?

데이터베이스 쿼리: 모든 테스트를 통과한 자동차 식별

이 가이드는 사전 정의된 테스트 세트를 성공적으로 완료한 자동차를 데이터베이스에서 효율적으로 선택하는 방법을 보여줍니다. passedtest 테이블에서 모든 테스트(A, B, C, D)를 통과한 자동차를 식별해야 하는 시나리오에 중점을 둘 것입니다.

IN문의 한계

IN 문은 목록 내에 값이 있는지 확인하는 데 유용하지만 이 특정 작업에는 적합하지 않습니다. IN를 사용하면 필수 테스트 중 하나만 통과한 자동차도 잘못 식별됩니다. 보다 강력한 접근 방식이 필요합니다.

집계 및 그룹화 활용

해결책은 집계 함수와 그룹화를 사용하는 것입니다. 우리는 COUNT() 함수를 사용하여 각 자동차가 통과한 고유한 테스트 유형의 수를 결정합니다. 그런 다음 GROUP BY 절은 자동차 이름별로 결과를 정리하여 자동차별로 고유한 테스트 수를 셀 수 있도록 합니다.

HAVING

로 결과 필터링

HAVING 절은 그룹화된 결과를 필터링하는 데 매우 중요합니다. 이를 통해 필요한 총 테스트 수(이 경우 4개)와 동일한 고유 테스트 유형 수가 있는 자동차를 격리할 수 있습니다.

SQL 솔루션

다음 SQL 쿼리는 원하는 결과를 얻습니다.

<code class="language-sql">SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = 4;</code>

이 쿼리는 carname 테이블에서 지정된 네 가지 테스트를 모두 통과한 passedtest만을 효율적으로 선택합니다.

종합 데이터 쿼리 확장

모든 테스트를 통과한 자동차에 대한 추가 세부 정보를 검색하려면 중첩 쿼리를 활용할 수 있습니다.

<code class="language-sql">SELECT *
FROM cars
WHERE carname IN (
    SELECT carname
    FROM PassedTest
    GROUP BY carname
    HAVING COUNT(DISTINCT testtype) = 4
);</code>

이 향상된 쿼리는 cars 테이블의 모든 테스트를 통과한 것으로 식별된 자동차에 대한 passedtest 테이블의 모든 열을 검색합니다.

위 내용은 데이터베이스 테이블에서 모든 테스트를 통과한 자동차를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.