什么时候交叉或加入两张桌子?

时间:2015-12-27 07:46:40

标签: sql

示例1:

SELECT name 
FROM Customer, Order 
WHERE Customer.id = Order.cid 

示例2:

SELECT name 
FROM Customer JOIN Order 
ON Customer.id = Order.cid 

这两个查询有什么区别?什么时候我应该与JOIN交叉两个表?

2 个答案:

答案 0 :(得分:5)

两者都会给你相同的结果。所以没有真正的情况可以使用一个而不是另一个。

comma separated joinANSI 89标准加入,INNER JOIN是较新的ANSI 92标准加入。

但是,comma separated join语法已弃用,我们总是倾向于使用INNER JOIN语法。如果您想要join多个表,则很难遵循Where子句中的连接条件,因为INNER JOIN语法更具可读性

答案 1 :(得分:1)

CROSS JOIN 操作是笛卡尔积。 CROSS JOIN 操作的结果 集合A和集合B之间是包含所有值的超集。 然后使用运算符 WHERE 来过滤此结果集。

INNER JOIN 操作将尝试从两个表中查找对应谓词的行 关键字ON后。这些行将转到结果集。

实际上,SQL引擎可以选择自己的物理实现 CROSS JOIN 运算符。 SQL引擎不必获取巨大的结果集然后过滤它。 SQL引擎行为会 使用 INNER JOIN 操作时相似。