示例1:
SELECT name
FROM Customer, Order
WHERE Customer.id = Order.cid
示例2:
SELECT name
FROM Customer JOIN Order
ON Customer.id = Order.cid
这两个查询有什么区别?什么时候我应该与JOIN交叉两个表?
答案 0 :(得分:5)
两者都会给你相同的结果。所以没有真正的情况可以使用一个而不是另一个。
comma separated join
是ANSI 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 操作时相似。