내 데이터베이스에는 다음과 같은 간단한 구조가 있습니다
으아악종A와 종B는 정보의 중복을 방지하기 위해 복합 고유하다는 점을 지적하고 싶습니다. 예를 들어 데이터베이스에 5종만 있는 경우 호환성 표는 다음과 같습니다.
으아악주어진 종 목록에서 서로 완전히 호환되는 종 목록을 반환하는 쿼리를 작성해야 합니다. 즉, 결과 목록의 모든 종은 제공된 목록의 모든 종과 호환되어야 합니다. 제공된 종은 결과 목록에 표시되어서는 안 됩니다.
다음 쿼리를 시도했지만 제공된 종 중 하나 이상과 호환되는 종만 반환되었습니다.
으아악서로 완벽하게 호환되는 종 목록을 얻으려면 이 쿼리를 어떻게 수정해야 합니까?
위 쿼리의 경우 예상되는 결과는 4종만 포함하는 종 목록이어야 합니다. 제공된 목록에서 종 1, 2, 3은 제외되며, 종 1 및 2와의 부적합성으로 인해 5종은 제외되어야 합니다.
어떤 도움이나 조언이라도 대단히 감사하겠습니다. 감사해요!
이 문제는 필터링과 집계를 통해 해결할 수 있습니다.
으아악하위 쿼리는
절)을 참조합니다.ref
) 和兼容物种 (spec
) 放在两个不同的列中。然后,我们可以筛选您感兴趣的三个参考物种,按兼容物种进行分组,最后保留与having
그룹과 정확히 일치하는 종(종의 이름도 알고 싶다면
으아악加入
:DB 바이올린 데모
여기에는 호환성=1에 명시적으로 연결된 종만 포함됩니다(즉, 종은 기본적으로 호환되지 않는 것으로 가정됩니다)
으아악여기에는 호환성 = 0과 명시적으로 연관된 종을 제외한 모든 종이 포함됩니다(즉, 종은 기본적으로 호환 가능한 것으로 가정됩니다)
으아악이 중 어느 것이 귀하의 논리에 더 잘 맞는지 사용하는 것이 좋습니다.
compatibility.speciesA
和compatibility.speciesB
列上添加索引,以优化查询性能。 p>