>  기사  >  데이터 베이스  >  행 전체에 여러 특정 열 값이 있는 MySQL ID를 선택하는 방법은 무엇입니까?

행 전체에 여러 특정 열 값이 있는 MySQL ID를 선택하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 07:30:27649검색

How to Select MySQL IDs with Multiple Specific Column Values Across Rows?

특정 열 값을 사용하여 여러 행에 걸쳐 발생하는 MySQL ID 선택

특정 열 내에서 두 개 이상의 특정 값을 만족하는 항목을 식별하는 것은 다음과 같습니다. MySQL에서는 도전적입니다. 다음 테이블 구조를 고려하십시오.

+-----------------------+
| item_id | category_id |
+-----------------------+
|   1     |    200      |
|   1     |    201      |
|   1     |    202      |
|   2     |    201      |
|   2     |    202      |
|   3     |    202      |
|   3     |    203      |
|   4     |    201      |
|   4     |    207      |
+-----------------------+

추가 카테고리와 잠재적으로 연관되어 있음에도 불구하고 지정된 두 카테고리 모두에 속하는 항목만 선택하는 것이 목표입니다.

비효율적인 솔루션:

  • WHERE Category_id = 201 AND Category_id = 202: 불가능한 조건(한 행에 두 개의 값)을 검색하므로 실패합니다.
  • WHERE 카테고리 ID = 201 OR 카테고리 ID = 202: 잘못된 결과를 반환합니다(두 카테고리 모두에 속하지 않는 항목 포함).

효과적인 해결 방법:

Self-Join:

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 = 201 AND c2.category_id = 202

이 방법은 공통 열(item_id)을 기반으로 동일한 테이블의 행을 조인하여 여러 행과 해당 값을 비교할 수 있습니다.

GROUP BY:

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

GROUP BY 함수를 활용하는 이 접근 방식은 각 item_id에 대한 고유 카테고리 값의 수를 계산합니다. 지정된 카테고리 수(이 경우 2개)와 동일한 cat_count를 가진 항목이 선택됩니다.

결론:

두 방법 모두 원하는 기준을 충족하는 항목을 효과적으로 식별합니다. . 둘 중 하나를 선택하는 것은 특정 요구 사항과 데이터베이스 성능 고려 사항에 따라 달라집니다.

위 내용은 행 전체에 여러 특정 열 값이 있는 MySQL ID를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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