有什么区别,每个应该有什么区别?
如果我正确理解该理论,则查询优化器应该可以互换使用。
它们不是同一件事。
考虑以下查询:
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将具有与之关联的任何行。
12345
使用INNER JOIN,子句 实际上是 等效的。但是,仅仅因为它们在功能上相同而产生相同的结果,并不意味着这两种子句具有相同的语义。
INNER JOIN