我通过SQL连接两个表并添加where子句。连接是通过where子句中的条件完成的。我想知道是否有区别,即where子句是否需要用括号分组来匹配连接子句。
举例来说:示例1是否等同于示例2和示例3?
示例1(无分组):
SELECT * FROM employees, vacation
WHERE employees.first_name = 'Maria' and vacation_start > 2017
AND employees.employee_id = vacation.employee_id
示例2(除了连接子句外,所有内容都已分组):
SELECT * FROM employees, vacation
WHERE (employees.first_name = 'Maria' and vacation_start > 2017)
AND employees.employee_id = vacation.employee_id
示例3(连接子句是第一个where参数):
SELECT * FROM employees, vacation
WHERE employees.employee_id = vacation.employee_id
AND (employees.first_name = 'Maria' and vacation_start > 2017)
我一直认为数据库会优化这种查询,但它们会吗?我主要使用MariaDB和SQLite。
JOIN
语法不是变体——自1992年以来它就是标准语法。任何编程库不支持它都没有借口。 - Bill Karwin