小编典典

SQL JOIN-WHERE子句与ON子句

sql

有什么区别,每个应该有什么区别?

如果我正确理解该理论,则查询优化器应该可以互换使用。


阅读 179

收藏
2021-05-05

共1个答案

小编典典

它们不是同一件事。

考虑以下查询:

SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID
WHERE Orders.ID = 12345

SELECT *
FROM Orders
LEFT JOIN OrderLines ON OrderLines.OrderID=Orders.ID 
    AND Orders.ID = 12345

第一个将返回订单及其订单号的行(如果有)12345。第二个将返回所有订单,但只有订单12345将具有与之关联的任何行。

使用INNER JOIN,子句 实际上是 等效的。但是,仅仅因为它们在功能上相同而产生相同的结果,并不意味着这两种子句具有相同的语义。

2021-05-05