동일한 열에 여러 WHERE 조건을 사용하여 선택
P粉384366923
2023-08-23 19:08:16
<p>알겠습니다. 여기서 명백하고 간단한 점을 간과하고 있는 것 같습니다... 하지만 동일한 열에서 여러 기준과 일치하는 레코드만 반환하는 쿼리를 작성해야 합니다... </ p>
<p>내 테이블은 사용자에게 플래그를 적용하기 위한 매우 간단한 링크 설정입니다...</p>
<pre class="brush:php;toolbar:false;">ID 연락처 ID 플래그 flag_type
----------------------------------
118 99 자원봉사자 1
119 99 업로드 2
120 100 수입 3을 통해
121 100 자원봉사자 1
122 100 업로드됨 2</pre>
<p>잠깐... 이 경우 연락처 99번과 100번이 모두 "자원봉사자"와 "업로드됨"으로 표시되어 있는 것을 볼 수 있습니다...</p>
<p>제가 해야 할 일은 검색 양식을 통해 입력된 여러 기준과 일치하는 연락처 ID를 반환하는 것뿐입니다... 연락처 ID는 선택한 모든 플래그와 일치해야 합니다... 내 머릿속에서 SQL은 다음과 같아야 합니다. < ;
</p>
<pre class="brush:php;toolbar:false;">연락처 ID 선택
WHERE 플래그 = '자원봉사자'
AND 플래그 = '업로드됨'...</pre>
<p>하지만... 아무것도 반환되지 않습니다... 제가 여기서 뭘 잘못하고 있는 걸까요? </p>
사용법:
으아악핵심은
t.flag
的计数需要等于IN
절의 인수 개수입니다.연락처 ID와 플래그의 조합에 고유 제약 조건이 없는 경우
으아악COUNT(DISTINCT t.flag)
를 사용하세요. 중복 가능성이 없으면 쿼리에서 DISTINCT를 생략할 수 있습니다.다음을 사용할 수 있습니다.
으아악GROUP BY
和HAVING COUNT(*) = _
:(
contact_id, flag
가 고유하다고 가정).또는 다음 링크를 사용하세요:
으아악플래그 목록이 길고 일치하는 항목이 많으면 첫 번째 플래그가 더 빠를 수 있습니다. 플래그 목록이 짧고 일치하는 항목이 거의 없으면 두 번째 항목이 더 빠를 수도 있습니다. 성능이 문제인 경우 데이터에 대해 테스트하여 어느 것이 가장 잘 작동하는지 확인하십시오.