你能告訴我內連接和等連接是否相同?內連接是否等同於連接?
回答
「內連接」與一般術語中的「等連接」不同。
'equi-join'表示使用相等運算符或同等運算符連接表。如果只使用平等(其他人可能不同意),我仍然會將一個外連接稱爲「等連接」。
'inner join'與'outer join'相反,並確定如何在沒有匹配值時連接兩個集合。
我發現這篇文章關於這個,猜測它會回答你的問題。
它們是無關的。
幾乎每個加入是等值連接, 因爲用於匹配 行的條件是基於兩個 值酮從每個 被連接的表的平等。所以這就是 的等值線:ON條件是 等於。這包括內連接 和所有三種類型的外連接。
另一方面,內部連接可以是 ,其基於相等行來匹配行,或者完全基於其他條件來完成 。如果它是 不是等同鏈接,那麼它通常被稱爲theta連接 ,雖然是精確的 ,但等效連接只是 之一可能的theta連接;其他theta 加入使用少於,少於或等於,等作爲比較 運算符。
答案是NO。
的同等聯接用來匹配從兩個表的兩列使用顯式操作者=:
實施例:
select *
from table T1, table2 T2
where T1.column_name1 = T2.column_name2
內部聯接用於獲取橫兩個表之間的產品,合併來自兩個表的所有記錄。爲了得到結果,你可以使用一個正確等連接或一個自然連接(表之間列名稱必須相同)
使用等連接(顯性和隱性)
select *
from table T1 INNER JOIN table2 T2
on T1.column_name = T2.column_name
select *
from table T1, table2 T2
where T1.column_name = T2.column_name
或使用自然連接
select *
from table T1 NATURAL JOIN table2 T2
HTH
如果有做出來的不同的話,我想在這裏它是。我與DB2進行了測試。 在'equi join'中,您必須選擇要連接的表的比較列,在內部連接中,您不必強制執行此操作。例如: -
Select k.id,k.name FROM customer k
inner join dealer on(
k.id =dealer.id
)
這裏所得到的行是唯一的兩列排
id name
但我認爲相等加入你必須選擇其他表的列太
Select k.id,k.name,d.id FROM customer k,dealer d
where
k.id =d.id
和這將導致有三列的行,在這裏你不可能有不需要的經銷商的比較專欄(即使你不想要它),這些行將看起來像
id(from customer) name(from Customer) id(from dealer)
可能這不是你的問題,但它可能是一個主要的區別。
你的意思是不需要的比較列是什麼意思?如果您不會在EqJoin中選擇「d.id」,那麼它也會起作用。 – UnKnown 2016-01-20 02:19:04
簡單地說:等值連接是可能的類型的內連接
爲了更深入的解釋:
的內部聯接是聯接僅返回行從滿足特定條件的連接表中選擇。這個條件可能是平等的,這意味着我們將有一個equi-join;如果條件不是平等 - 可能是不平等,大於,小於,等等 - 我們有一個nonequi-join,更準確地說是theta-join。
如果我們不希望一定遇到過這樣的情況呢,我們可以有 外連接(所有表中的所有行返回),左連接(所有行 從左表返回,只匹配右表),右加入 (返回右表的所有行,只匹配左表)。
答案是否定的,這裏是排序和簡單的讀者。
內部連接可以在連接條件中具有等於(=)和其他運算符(如<,>,<>)。
Equi join在連接條件中只有等號(=)運算符。
相等加入可以是內連接,左外連接,右外連接
答案是肯定的,但作爲一個結果。所以這裏是一個例子。
考慮三個表:
訂單(ord_no,purch_amt,ord_date,CUSTOMER_ID,salesman_id)
客戶(CUSTOMER_ID,CUST_NAME,城市品位,salesman_id)
推銷員(salesman_id,名稱,城市,佣金)
現在,如果我有這樣的查詢:
找到DETA訂單的ils。
使用INNER JOIN:
SELECT * FROM orders a INNER JOIN customer b ON a.customer_id=b.customer_id
INNER JOIN salesman c ON a.salesman_id=c.salesman_id;
使用JOIN EQUI:
SELECT * FROM orders a, customer b,salesman c where
a.customer_id=b.customer_id and a.salesman_id=c.salesman_id;
執行這兩個查詢。你會得到相同的輸出。
回到你的問題Equijoin和inner join的輸出沒有區別。但是這兩種類型的內部執行可能有所不同。
- 1. 不等於內連接
- 2. 右連接等於左連接?
- 3. SQL左外連接vs內連接不等於
- 4. 左連接優於內連接?
- 5. Linq等同於JavaScript的連接?
- 6. 內連接內連接
- 7. OpenId'PAPE等效於facebook連接
- 8. 是內連接等價關係嗎?
- 9. php sql:內部連接是否可以右連接
- 10. 是否存在。=用於自連接的JavaScript等價物?
- 11. 外連接(+)的舊Oracle語法是否等於新語法?
- 12. 是否有替代內部連接
- 13. 內連接 - 檢查是否所有表
- 14. 這個連接是否過於複雜?
- 15. 什麼是Linq等同於帶有OR連接的SQL查詢?
- 16. 左連接上的內部連接使左連接表現爲內連接
- 17. 內部連接的內部連接?
- 18. 內連接基於輸入
- 19. 內連接取決於行
- 20. 這是左連接還是右連接,內部還是外部?
- 21. 是否有可能在異步套接字上等待連接
- 22. moveToThread()是否重寫與排隊連接的直接連接?
- 23. Android對等連接
- 24. 對等連接android
- 25. SqlCommand.Dispose是否關閉連接?
- 26. IP地址是否連接
- 27. 我是否連接到Oracle?
- 28. 它是否連接到Hibernate?
- 29. 是否IDataReader.Dispose()關閉連接?
- 30. pop3連接是否超時?
那麼,非EqJoin是內連接? – UnKnown 2016-01-20 02:05:46