특정 열 값이 여러 개인 여러 행에서 발생하는 MySQL 선택 ID
문제:
특정 열에 대해 지정된 여러 값을 기반으로 연관 테이블에서 항목을 선택하는 것은 일반적이지만 어려운 작업입니다. 예를 들어,
item_id | category_id |
---|---|
1 | 200 |
1 | 201 |
1 | 202 |
2 | 201 |
2 | 202 |
3 | 202 |
3 | 203 |
4 | 201 |
4 | 207 |
표가 주어지면 목표는 지정된 카테고리 모두 또는 둘 다에 있는 항목만 선택하는 것입니다. 예를 들어 카테고리 ID 201과 202가 제공되면 항목 1과 2만 반환되어야 합니다.
해결책:
1. 자체 조인:
이 방법은 item_id 열에서 테이블 자체를 조인하는 것입니다.
<code class="sql">SELECT c1.item_id FROM item_category AS c1 INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id WHERE c1.category_id IN (201, 202)</code>
이 쿼리는 각 고유 쌍에 대해 하나의 행이 있는 조인된 결과 집합을 반환합니다. Category_id 기준을 만족하는 원본 테이블의 행
2. 그룹 BY 및 HAVING:
대체 접근 방식은 GROUP BY 및 HAVING 절을 사용하는 것입니다.
<code class="sql">SELECT c.item_id, COUNT(*) AS cat_count FROM item_category AS c WHERE c.category_id IN (201, 202) GROUP BY c.item_id HAVING cat_count = 2</code>
이 쿼리는 item_id별로 행을 그룹화하고 카테고리 ID의 발생 횟수를 계산합니다. 각 행마다 201과 202입니다. HAVING 절은 지정된 발생 횟수(이 경우 2)가 없는 행을 필터링합니다.
위 내용은 MySQL의 행 전체에 여러 특정 열 값이 있는 항목을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!