태그가이고 이 contentid가 인 두 개의 태그가있는 "태그"테이블이 있다고 가정합니다. 각 행은 콘텐츠에 할당 된 태그를 나타냅니다.SQL 쿼리 : 하위 쿼리 대신 여러 행에 대해 "AND"시뮬레이션
: 나는 나에게 tagids (334), (338) 태그 콘텐츠의 모든 조각의 콘텐츠 ID를 줄 것이다 쿼리 및 342이 될 것이라고 할 수있는 "쉬운"방법 (의사를) 원하는
select contentid from tags where tagid = 334 and contentid in (
select contentid from tags where tagid = 338 and contentid in (
select contentid from tags where tagid = 342
)
)
그러나 내 직감은 나에게 더 빠르고 더 확장 가능한 방법이 있음을 알립니다. 예를 들어, 12 개의 태그 교차를 찾으려면 어떻게해야합니까? 이것은 신속하게 끔찍한 얻을 수 있습니다. 어떤 아이디어?
편집 : 이것은 this excellent blog post에서도 다루어집니다. 내가 생각할 수있는
그게 전부입니다. 비록 tagid, contentid가 유일하다면, 아마도 DISTINCT는 COUNT (DISTINCT tagID) – tzot
에 필요하지 않을 것입니다. 매우 똑똑한 솔루션이지만 SQL2000 설치시에는 조정이 필요합니다. select 절에 집계가 없으면 "having"을 사용할 수 없습니다. 그래도 충분히 쉽게 해결할 수 있습니다. –
이 작업은 MySQL뿐만 아니라 Oracle에서도 가능합니까? –