2017-11-12 9 views
-1

저는 mysql에서 매우 새로 왔습니다. 내가 여러 AND 조건을 사용하는 내부 조인과 다중 내부 조인의 차이점

내가 내 여러 사용하는 쿼리를 건너 왔어요

SELECT * 
FROM table_A a 
INNER JOIN table_B b 
ON a.criteria_1 = b.criteria_1 
AND a.criteria_2 = b.criteria_2 
AND a.criteria_3 = b.criteria_3 

오늘은 내 다음 코드를 사용하여 테이블을 조인에 배운 table_A 및 Table_B

를 호출 할 수 있습니다 두 테이블

에 가입해야

합류
SELECT * 
FROM table_A a 
INNER JOIN table_B b 
ON a.criteria_1 = b.criteria_1 
INNER JOIN table_B b1 
ON a.criteria_2 = b1.criteria_2 
INNER JOIN table_B b2 
ON a.criteria_3 = b3.criteria_3 

두 제품의 차이점은 무엇입니까?

여기에서 질문을 처음 작성합니다.

+1

SQL에서 정의 조인을 읽는 것으로 시작하십시오. 예를 통해 작업하십시오. 코드를 부분별로 실행하십시오. 예 : sqlfiddle.com. 이것은 "자체 조인"입니다. 그것에 대해 읽어보십시오. – philipxy

+0

차이점은 쿼리를 관리하기 어렵게 만듭니다. 조인이 많으면 쿼리 실행 시간이 길어집니다. 당신은 질의의 실행 시간을 테스트 할 수 있으며 그 차이를 얻을 수 있습니다. –

+0

@NewazSharif : 기능면에서 실제 차이가 있습니다. –

답변

1

첫 번째 쿼리는 6 번째 열만 반환하고 두 번째는 12 번째를 반환합니다. 모든 쿼리는 두 번째 쿼리와 일치해야합니다.

DROP TABLE IF EXISTS A,B; 

CREATE TABLE A (C1 INT, C2 INT, C3 INT); 
CREATE TABLE B (C1 INT, C2 INT, C3 INT); 

INSERT INTO A VALUES (1,1,1),(1,2,4); 
INSERT INTO B VALUES (1,1,1),(1,2,3); 

SELECT * FROM 
A 
JOIN B ON A.C1 = B.C1 AND A.C2 = B.C2 AND A.C3 = B.C3; 

SELECT * 
FROM A 
JOIN B B1 ON A.C1 = B1.C1 
JOIN B B2 ON A.C2 = B2.C2 
JOIN B B3 ON A.C3 = B3.C3; 

SELECT * FROM 
    -> A 
    -> JOIN B ON A.C1 = B.C1 AND A.C2 = B.C2 AND A.C3 = B.C3; 
+------+------+------+------+------+------+ 
| C1 | C2 | C3 | C1 | C2 | C3 | 
+------+------+------+------+------+------+ 
| 1 | 1 | 1 | 1 | 1 | 1 | 
+------+------+------+------+------+------+ 
1 row in set (0.00 sec) 

MariaDB [sandbox]> 
MariaDB [sandbox]> SELECT * 
    -> FROM A 
    -> JOIN B B1 ON A.C1 = B1.C1 
    -> JOIN B B2 ON A.C2 = B2.C2 
    -> JOIN B B3 ON A.C3 = B3.C3; 
+------+------+------+------+------+------+------+------+------+------+------+------+ 
| C1 | C2 | C3 | C1 | C2 | C3 | C1 | C2 | C3 | C1 | C2 | C3 | 
+------+------+------+------+------+------+------+------+------+------+------+------+ 
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 
| 1 | 1 | 1 | 1 | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 
+------+------+------+------+------+------+------+------+------+------+------+------+ 
2 rows in set (0.00 sec) 
+0

감사합니다. 신속한 답변에 정말 감사드립니다. –

+0

@MohamedAmar 이렇게하면 쿼리가 실행됩니다. 왜 안 그래? 왜 질문을합니까? – philipxy

+0

귀하의 진술을 이해하지 못할지 모르겠습니다. –