你能告诉我内连接和等连接是否相同?内连接是否等同于连接?
回答
“内连接”与一般术语中的“等连接”不同。
'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. SQL左外连接vs内连接不等于
- 3. 左连接优于内连接?
- 4. 内连接内连接
- 5. OpenId'PAPE等效于facebook连接
- 6. 是内连接等价关系吗?
- 7. 内连接 - 检查是否所有表
- 8. 是否存在。=用于自连接的JavaScript等价物?
- 9. 左连接上的内部连接使左连接表现为内连接
- 10. 内部连接的内部连接?
- 11. 什么是Linq等同于带有OR连接的SQL查询?
- 12. 这个连接是否过于复杂?
- 13. 是否有可能在异步套接字上等待连接
- 14. moveToThread()是否重写与排队连接的直接连接?
- 15. 对等连接android
- 16. 检查mongoDB是否连接
- 17. 我是否连接到Oracle?
- 18. 它是否连接到Hibernate?
- 19. JMeter是否池HTTP连接?
- 20. pop3连接是否超时?
- 21. SqlCommand.Dispose是否关闭连接?
- 22. CBCentralManager是否连接超时?
- 23. 什么是内连接?
- 24. 大内连接
- 25. 内连接 - 使用相同连接的两个值!
- 26. 在同一查询中使用左连接和内连接
- 27. 内连接和左连接在相同的SQL查询
- 28. LINQ Lambda左连接与内部连接
- 29. 内部连接后自我连接
- 30. 内连接与连接表,其中
那么,非EqJoin是内连接? – UnKnown 2016-01-20 02:05:46