mysql - 如何在 INNER JOIN 语句中使用括号

标签 mysql sql join

我似乎无法弄清楚在 innerjoin 语句中正确使用括号。例如,当该语句中总共执行了 4 个 INNERJOINS 时,为什么 FROM 子句之后需要放置 3 个括号。

SELECT Recipe_Classes.RecipeClassDescription,Recipes.RecipeTitle,Recipes.Preparation, Ingredients.IngredientName, Recipe_Ingredients.RecipeSeqNo,   Recipe_Ingredients.Amount, Measurements.MeasurementDescription 
FROM (((Recipe_Classes 
INNER JOIN Recipes 
ON Recipe_Classes.RecipeClassID = Recipes.RecipeClassID) 
INNER JOIN Recipe_Ingredients 
ON Recipes.RecipeID = Recipe_Ingredients.RecipeID) 
INNER JOIN Ingredients 
ON Ingredients.IngredientID = Recipe_Ingredients.IngredientID) 
INNER JOIN Measurements 
ON Measurements.MeasureAmountID = Recipe_Ingredients.MeasureAmountID 
ORDER BY RecipeTitle, RecipeSeqNo

最佳答案

不需要括号。但建议使用表别名!

SELECT rc.RecipeClassDescription, Recipes.RecipeTitle, r.Preparation, 
       i.IngredientName, ri.RecipeSeqNo, ri.Amount, m.MeasurementDescription 
FROM Recipe_Classes rc INNER JOIN
     Recipes r
     ON rc.RecipeClassID = r.RecipeClassID INNER JOIN
     Recipe_Ingredients ri
     ON r.RecipeID = ri.RecipeID INNER JOIN
     Ingredients i
     ON i.IngredientID = ri.IngredientID INNER JOIN
     Measurements m
     ON m.MeasureAmountID = ri.MeasureAmountID
ORDER BY RecipeTitle, RecipeSeqNo;

虽然括号在理论上很有用(在某些使用外连接的情况下),但我发现在实践中并不需要它们。一个异常(exception)是 MS Access,它需要括号来进行多个连接。

关于mysql - 如何在 INNER JOIN 语句中使用括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46576022/

相关文章:

MYSQL 语法不评估不等于存在 NULL

sql - 从函数返回的记录具有连接的列

php - 更轻松地访问和更改 PHP MySQL 字段

MySql UNION SELECT 缺少字段

php - 根据另一列先前选择的值选择特定行

sql - 将 SQL 查询限制为每个组的前两个计数

MYSQL: Query 2 tables with union 很慢,如何改善?

Mysql:依赖于列的 COUNT() 的 WHERE 语句?

sql - 加入 3 个表 Oracle SQL

mysql - 优化 MySQL - JOIN 与嵌套查询