"표 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 JOIN
LEFT OUTER JOIN
은 왜요를 요?RIGHT OUTER JOIN
구문론은?"은, 을 두는 않았기 을 받았을 이라고 생각합니다),에다은)의이기 때문입니다. 그것은 사용자들이 테이블의 순서를 바꾸도록 강요할 것입니다.FROM
단순히 조인 유형을 변경할 때 일부 상황에서 조항.
select fields
from tableA --left
left join tableB --right
on tableA.key = tableB.key
에 있는 .from
etableA
는
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
.
요가 할 것 .AND
where
의 절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에는 어떤 조건이 참인지 해당 속성만 표시됩니다.
첫 번째 왼쪽 조인 쿼리에서 왼쪽과 오른쪽에 각각 table1과 table2를 선언하고, 두 번째 오른쪽 조인 쿼리에서 오른쪽과 왼쪽에 각각 table1과 table2를 선언하는 것처럼 쿼리의 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
'it-source' 카테고리의 다른 글
고유 인덱스가 열 검색 성능에 더 좋습니까? (PGSQL & MySQL) (0) | 2023.10.08 |
---|---|
파워셸에서 내장된 별칭을 제거하거나 교체하려면 어떻게 해야 합니까? (0) | 2023.10.08 |
도커 이미지의 sha256 코드는 어디서 찾을 수 있습니까? (0) | 2023.10.08 |
문자열을 숫자로 변환하고 하나를 추가합니다. (0) | 2023.10.08 |
AngularJS - ng여러 개체 유형으로 반복 (0) | 2023.10.08 |