【发布时间】:2016-12-20 12:48:40
【问题描述】:
下午好,我刚刚注意到一些事情。如果我编写一个带有 JOIN 的 mysql 查询,例如:
Select Car, Vendor from Cars JOIN Vendor On Vendor.IdCar=Car.IdCar WHERE Car="Brand"
它将返回等于“品牌”的那辆汽车。
但我注意到,如果我以这种方式构造查询:
Select Car, Vendor from Cars JOIN Vendor On Vendor.IdCar=Car.IdCar AND Car="Brand"
它将返回与上一个查询相同的内容。注意到我使用 AND 而不是 WHERE。我还在 PHP 查询中对其进行了测试。比如:
Select Car, Vendor from Cars JOIN Vendor On Vendor.IdCar=Car.IdCar AND Car=$brand
而不是
Select Car, Vendor from Cars JOIN Vendor On Vendor.IdCar=Car.IdCar WHERE Car=$brand
所以我要问的问题是:为什么第二个查询有效?是不是因为使用了 JOIN,因为我很确定在 AND 之前需要 WHERE 子句?
【问题讨论】:
-
是的,AND 附加到连接子句
-
有趣的问题。可能是戈登·林诺夫可以解释的;他非常擅长这类事情,并且精通 SQL。
-
因为
AND应用于您的ON子句,而不是专门应用于JOIN子句。虽然它并不完全相同,但它在这里起到了类似的过滤结果的作用。