0
A
回答
0
是:
在您的第一個例子(A OUTERJOIN (B JOIN C)
),如果有一個B或C沒有匹配的記錄,B和C被省略。
在第二個示例(A OUTERJOIN C OUTERJOIN B
)中,即使B沒有匹配記錄,也可以返回C.
0
與我的評論相同。如果B連接C產生空結果集,則外連接「空結果集」與A相同。
外連接B外連接C有些不同(至少如果B和C之一是。不爲空)
0
由於A似乎連接到C,這將是更清晰的寫第一個選項爲:
A OUTERJOIN (C JOIN B)
兩個選擇之間的主要區別是從C數據是否返回時,有是A和C之間的匹配。僅僅看這個方面,兩個選項可以被看作集合:
intersect(A,intersect(C,B))
intersect(A,C)
顯然,兩者是不同的,因爲第一種形式可以消除由C行之前,它與A.相交
0
哪些領域你加入上可以有所作爲的表不能保證只有擁有一種可能字段加入到另一個表上。在這種情況下,表b有一個字段可以連接到表c或表a?這有所不同。你想要返回的字段對結果集有影響,並且兩件事情會返回相同的結果。數據的狀態有所不同,因爲有些查詢在數據更改之前似乎是等同的。因此,我們明確指出這些並不等同,可以幫助您避免這些錯誤。無論你使用完整的,左邊的還是右邊的外連接都會有所作爲。最後,你添加哪些條款可以使他們看起來是等同的。
退房使用臨時表(SQL服務器語法)
create table #a (aid int, sometext varchar(50))
create table #b (bid int, sometext2 varchar(50), cid int, aid int)
create table #c (cid int, sometext3 varchar(50), aid int)
insert into #a
values(1, 'test') , (2, 'test2'), (3, 'test3')
insert into #b
values(1, 'test', 1, 2) , (2, 'test2', 2, 1), (3, 'test3', 2, 2)
insert into #c
values(1, 'test', 1) , (2, 'test2', 2), (3, 'test3', 1)
select *
from #a a
left outer join #c c on a.aid = c.aid
left outer join #b b on a.aid = b.aid
select *
from #a a
left outer join #c c on a.aid = c.aid
left outer join #b b on c.cid = b.cid
select *
from #a a
left outer join #b b
join #c c on b.cid = c.cid
on a.aid = b.aid
select *
from #a a
right outer join #c c on a.aid = c.aid
right outer join #b b on a.aid = b.aid
select *
from #a a
right outer join #c c on a.aid = c.aid
right outer join #b b on c.cid = b.cid
select *
from #a a
right outer join #b b
join #c c on b.cid = c.cid
on a.aid = b.aid
select *
from #a a
full outer join #c c on a.aid = c.aid
full outer join #b b on a.aid = b.aid
select *
from #a a
full outer join #c c on a.aid = c.aid
full outer join #b b on c.cid = b.cid
select *
from #a a
full outer join #b b
join #c c on b.cid = c.cid
on a.aid = b.aid
相關問題
- 1. OUTER JOIN VS INNER JOIN
- 2. LEFT JOIN(OUTER JOIN)與INNER JOIN的條件
- 3. LEFT OUTER JOIN
- 4. 'LEFT JOIN'vs'LEFT OUTER JOIN'
- 5. JPQL OUTER JOIN
- 6. LEFT OUTER JOIN
- 7. 多個OUTER JOIN
- 8. NHhibernate OUTER JOIN
- 9. LEFT OUTER JOIN
- 10. SQL Server OUTER JOIN
- 11. 如何刪除LEFT OUTER JOIN
- 12. LEFT OUTER JOIN PostgreSQL中
- 13. Arel Aggregations,Count,Outer Join?
- 14. Django的FULL OUTER JOIN
- 15. Rails的LEFT OUTER JOIN
- 16. 應用OUTER JOIN上
- 17. LEFT OUTER JOIN 2 datatables
- 18. 使用LEFT OUTER JOIN
- 19. NHibernate的,LEFT OUTER JOIN
- 20. LEFT OUTER JOIN與LIMIT
- 21. 瞭解LEFT OUTER JOIN
- 22. Inner Join,Cross Join和Left Outer Join之間有什麼區別?
- 23. 如何編寫右外組合JOIN和LEFT OUTER JOIN
- 24. LINQ JOIN和OUTER JOIN - 如何將SQL轉換爲LINQ表達式
- 25. MySQL LEFT OUTER JOIN不過濾記錄
- 26. MySQL的 - 如何更新後LEFT OUTER JOIN
- 27. 如何使用Like in left outer join
- 28. 如何在MYSQL中使用INNER/OUTER JOIN
- 29. 如何模擬core.logic中的'outer join'?
- 30. 如何在查詢上執行OUTER JOIN
是這些例子。例如。如果b加入c沒有匹配。 – jarlh 2015-02-06 15:23:59
@jarlh:糟糕,請參閱我的更新 – Eric 2015-02-06 15:26:45
「outerjoin」不是SQL操作。有「左外連接」,「右外連接」和「完全外連接」。他們不一樣。 – 2015-02-06 15:57:07