동일한 열에서 여러 일치 기준을 사용하여 레코드 선택
SQL에서는 동일한 열에서 여러 조건을 충족하는 레코드를 선택하는 것이 어려울 수 있습니다. 다음 시나리오를 고려해보세요.
사용자 태그를 저장하는 테이블이 있습니다. 각 항목에는 연락처 ID, 태그 및 태그 유형이 포함되어 있습니다. 검색 양식에 지정된 모든 태그와 일치하는 연락처 ID만 검색하면 됩니다.
동일한 열 이름에 여러 조건을 사용하는 제안한 쿼리는 SQL이 이를 단일 조건으로 해석하기 때문에 결과를 반환하지 않습니다. 이 문제를 극복하려면 다음 두 가지 중 하나를 수행할 수 있습니다.
방법 1: GROUP BY 및 HAVING 사용
이 방법은 결과를 연락처 ID별로 그룹화한 다음 검색 기준과 일치하는 고유 태그 수가 지정된 태그 수와 같은지 확인하는 것입니다.
<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>
방법 2: 연결 사용
이 방법에는 각 조건에 대해 여러 연결을 만드는 것이 포함됩니다.
<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>
방법 선택은 태그 수와 예상 일치 수에 따라 다릅니다. 일치하는 항목 수가 적은 긴 태그 목록의 경우 첫 번째 접근 방식(GROUP BY 및 HAVING)이 더 빠를 수 있습니다. 그러나 일치 항목이 많은 짧은 태그 목록의 경우 두 번째 접근 방식(연결)이 더 나은 성능을 발휘할 수 있습니다.
위 내용은 동일한 열에서 여러 조건과 일치하는 SQL 레코드를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!