it-source

"표 1 왼쪽 조인 표 2"와 "표 2 오른쪽 조인 표 1"은 서로 교환할 수 있습니까?

criticalcode 2023. 10. 8. 09:57
반응형

"표 1 왼쪽 조인 표 2"와 "표 2 오른쪽 조인 표 1"은 서로 교환할 수 있습니까?

예를 들어, 두 개의 테이블이 있습니다.

create table Table1 (id int, Name varchar (10))

create table Table2 (id int, Name varchar (10))

표 1 데이터는 다음과 같습니다.

    Id     Name     
    -------------
    1      A        
    2      B    

표 2 데이터는 다음과 같습니다.

    Id     Name     
    -------------
    1      A        
    2      B 
    3      C

아래에 언급된 SQL 문을 모두 실행하면 두 출력이 모두 동일합니다.

select *
from Table1
  left join Table2 on Table1.id = Table2.id

select *
from Table2
  right join Table1 on Table1.id = Table2.id

위의 SQL 문에서 왼쪽 조인과 오른쪽 조인의 차이점을 설명해 주시기 바랍니다.

Select * from Table1 left join Table2 ...

그리고.

Select * from Table2 right join Table1 ...

확실히 완전히 교환할 수 있습니다.요이라도 .Table2 left join Table1 쌍,Table1 right join Table2차이를 확인합니다.표 2에는 표 1에 없는 ID를 가진 행이 포함되어 있으므로 이 쿼리는 더 많은 행을 제공할 수 있습니다.

데이터를 가져오는 테이블은 'LEFT'입니다.
가입하려는 테이블은 'RIGHT'입니다.
왼쪽 조인: 왼쪽 테이블에서 모든 항목을 가져오고 오른쪽 테이블에서 일치하는 항목만 가져옵니다.
RIGHT JOIN: 오른쪽 테이블에서 모든 항목을 가져오고 왼쪽 테이블에서 일치하는 항목만 가져옵니다.
그래서:

Select * from Table1 left join Table2 on Table1.id = Table2.id  

다음을 제공:

Id     Name       
-------------  
1      A          
2      B      

그러나:

Select * from Table1 right join Table2 on Table1.id = Table2.id

다음을 제공:

Id     Name       
-------------  
1      A          
2      B   
3      C  

이 했습니다 테이블에 했습니다.
그리고.
이 적고 행이 ,시
도:

 If Table1.Rows.Count > Table2.Rows.Count Then  
    ' Left Join  
 Else  
    ' Right Join  
 End If  

당신은 "만약 내가 다시 쓸 수 있다면"이라고 묻는 것처럼 보입니다.RIGHT OUTER JOINLEFT OUTER JOIN은 왜요를 요?RIGHT OUTER JOIN구문론은?"은, 을 두는 않았기 을 받았을 이라고 생각합니다),에다은)의이기 때문입니다. 그것은 사용자들이 테이블의 순서를 바꾸도록 강요할 것입니다.FROM단순히 조인 유형을 변경할 때 일부 상황에서 조항.

select fields 
from tableA --left
left join tableB --right
on tableA.key = tableB.key

에 있는 .frometableA

tableA <- tableB
[left]------[right]

(tableA하는 항목이 (), ().tableB " "" 합니다를

그리고 ((tableB하는 항목이 ( ), ()tableA 를합니다.right join.

따라서 다음 쿼리는 위에서 사용한 쿼리와 동일합니다.

select fields
from tableB 
right join tableA on tableB.key = tableA.key

당신의 두 진술은 동등합니다.

대부분의 사람들은 사용만 사용합니다.LEFT JOIN더 직관적으로 -에를 것 같습니다 -든 RDBMS합니다.RIGHT JOIN.

요가 할 것 .ANDwhere의 절Outer Excluding JOIN 수 있도록 하기 .A Union B Minus A Interaction B. 쿼리를 다음으로 업데이트해야 한다고 생각합니다.

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL AND B.Key IS NULL

에 저희가.OR입니다의 수 것입니다.A Union B

Table1.id = Table2.id 의 Table1 왼쪽 조인 Table2에서 *를 선택합니다.

첫 번째 쿼리에서 왼쪽 조인왼쪽 테이블 테이블1과 오른쪽 테이블2를 비교합니다.

1의 모든 속성이 표시되는 반면, 표 2에는 어떤 조건이 참인지 해당 속성만 표시됩니다.

Table1.id = Table2.id 의 표 2 오른쪽 조인 표 1에서 *를 선택합니다.

첫 번째 쿼리에서 오른쪽 조인오른쪽 테이블 테이블1왼쪽 테이블2를 비교합니다.

1의 모든 속성이 표시되는 반면, 표 2에는 어떤 조건이 참인지 해당 속성만 표시됩니다.

번째 왼쪽 조인 쿼리에서 왼쪽과 오른쪽에 각각 table1table2를 선언하고, 두 번째 오른쪽 조인 쿼리에서 오른쪽과 왼쪽에 각각 table1table2를 선언하는 것처럼 쿼리의 table 선언 순서가 다르기 때문에 두 쿼리 모두 동일한 결과를 제공합니다.

이것이 두 쿼리에서 동일한 결과를 얻는 이유입니다.따라서 다른 결과를 원한다면 이 두 개의 쿼리를 각각 실행합니다.

Table1.id = Table2.id 의 Table1 왼쪽 조인 Table2에서 *를 선택합니다.

Table1.id = Table2.id 의 Table1 오른쪽 조인 Table2에서 *를 선택합니다.

Select * from Table1 t1 Left Join Table2 t2 on t1.id=t2.id정의에 따라: 1의 로 언급된 열과 2의 합니다.Left Join은 Table 1의 "select" 키워드와 함께 언급된 모든 열과 Table 2의 "on" 키워드 뒤의 기준과 일치하는 열을 선택합니다.

마찬가지로 정의에 따라:Right Join은 Table 2의 "select" 키워드와 함께 언급된 모든 열과 Table 1의 "on" 키워드 뒤의 기준과 일치하는 열을 선택합니다.

당신의 질문을 참고하면, 두 표의 id는 출력에 던져지는 데 필요한 모든 열과 비교됩니다.따라서 ids 1과 2는 두 표에서 공통적으로 나타나며 결과적으로 첫 번째 와 두 번째 표에서 id와 name 열이 순서대로 있는 4개의 열을 갖게 됩니다.

*select * from Table1 left join Table2 on Table1.id = Table2.id

위의 식은 표 1과 열에서 모든 레코드(행)를 가져오고, 표 1과 표 2에서 일치하는 id를 표 2에서 가져옵니다.

select * from Table2 right join Table1 on Table1.id = Table2.id**

마찬가지로 위 식을 통해 표 1과 열에서 모든 레코드(행)를 가져오고, 표 1과 표 2에서 일치하는 id를 표 2에서 가져옵니다(이것은 오른쪽 조인이므로 표 1이 아닌 표 2의 모든 열을 고려합니다).

언급URL : https://stackoverflow.com/questions/4715677/are-from-table1-left-join-table2-and-from-table2-right-join-table1-interchan

반응형