집 >데이터 베이스 >MySQL 튜토리얼 >SQL의 동일한 열에서 여러 조건과 일치하는 레코드를 효율적으로 선택하는 방법은 무엇입니까?
같은 열의 레코드에 대한 SQL 다중 조건 쿼리 팁
SQL 쿼리에서 여러 조건을 기반으로 레코드를 필터링하려면, 특히 이러한 조건이 동일한 열에 적용되는 경우에는 약간의 기술이 필요합니다. 이 기사에서는 이러한 상황을 효율적으로 처리하는 방법을 살펴보겠습니다.
예를 들어 하나의 테이블은 사용자와 태그 유형을 연결하며 목표는 모든 검색 양식에서 체크 표시와 일치하는 연락처 ID를 얻는 것입니다. 언뜻 보기에 다음 쿼리는 직관적인 것처럼 보입니다.
<code class="language-sql">SELECT contactid WHERE flag = 'Volunteer' AND flag = 'Uploaded'...</code>
그러나 결과가 반환되지 않습니다. AND 연산자는 동시에 두 가지 조건을 충족하기 위해 동일한 행이 필요하며 이러한 행은 이 테이블에 존재하지 않기 때문입니다.
이 문제를 해결하기 위한 한 가지 방법은 GROUP BY
및 HAVING COUNT(*) = n
을 사용하는 것입니다. 여기서 n은 선택한 마커의 수입니다.
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...) 列表中的数量匹配</code>
이 메소드는 WHERE
절에 포함된 n개의 태그 각각에 contact_id가 n번 발생하는지 확인합니다. 또 다른 방법은 Join을 사용하는 것입니다:
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如有必要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
여기에서는 동일한 contact_id를 나타내는 행을 필수 태그와 연결하기 위해 여러 조인이 사용됩니다.
어떤 방법을 선택할지는 확인할 태그 수와 일치하는 레코드 수에 따라 다릅니다. GROUP BY
태그 수가 많고 일치 항목 수가 적을 때 더 빠를 수 있는 반면, 태그 수가 적고 일치 항목이 많을 때 조인 성능이 더 좋을 수 있습니다. 최상의 성능을 얻으려면 실제 데이터에서 두 방법을 모두 테스트하는 것이 좋습니다.
위 내용은 SQL의 동일한 열에서 여러 조건과 일치하는 레코드를 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!