, 당신은 다음과 같이 쿼리를 다시 작성 시도 할 수 :
거의 효율성의 관점에서 어떤 차이를 만들 것,하지만 적어도 주관적이다 (쿼리를 읽기 쉽게 만들 수
SELECT
b1.NAME,
b2.NAME,
.
.
.
FROM TAB1 a
INNER JOIN TAB2 b1 ON a.ID1 = b1.ID
INNER JOIN TAB2 b2 ON a.ID1 = b1.ID
...
, 당연하지).
고려해야 할 또 다른 옵션이있을 수 있지만 확실하지 않은 두 가지 큰 IF가 있습니다. 귀하의 상황에 적용 가능하고 더 효율적일 경우.
첫 번째 것은 TAB1
에있는 키의 존재 여부에 달려 있습니다. 전용 키 열이 없으면 (ID1, IF2, ... IDN)
의 모든 조합이 고유 한 것으로 보장되면 충분합니다. 그리고이 방법이 복수 조회보다 더 효율적인지 여부는 IDx
열의 수에 따라 다릅니다.
아이디어는 @dasblinkenlight's answer에있는 것과 유사한 조건으로 두 테이블을 한 번만 조인 한 다음 키 열로 그룹화하고 조건부 집계를 사용하여 이름을 가져 오는 것입니다. 의미는 다음과 같습니다.
SELECT
MAX(CASE TAB2.ID WHEN TAB1.ID1 THEN TAB2.NAME END) AS NAME1,
MAX(CASE TAB2.ID WHEN TAB1.ID2 THEN TAB2.NAME END) AS NAME2,
.
.
.
FROM TAB1
INNER JOIN TAB2 ON TAB2.ID IN (TAB1.ID1, TAB1.ID2, ...)
GROUP BY TAB1.ID1, TAB1.ID2, ...
두 테이블 구조를 모두 표시하고 필요한 결과를 쿼리에 설명합니다. – manurajhada
나에게 잘 어울립니다. ID가 다를 수 있기 때문에 검색어를 여러 번 사용해야하지만 여러 개의 조회가 필요합니다. – Andomar