对 MySQL 中的 2 个以上的表执行 INNER JOIN
Perform an INNER JOIN with more than 2 tables in MySQL
我最近才了解到 SQL INNER JOIN
我想将它应用到一个项目中所以基本上我有三个表
- 付款人
- 折扣
- 项
现在我只是想知道我是否可以 return 使用 3 个表中的 INNER JOIN
同时获得来自这三个表的结果,或者是否只能使用 2 个表?
如果可以使用 2 个以上表格的 INNER JOIN
那么请指导我如何做,如果不能,请告诉我如何以任何其他可能的方式做。
现在这是我目前的查询,它没有按预期工作:
SELECT *
FROM payers
INNER JOIN discounts AND items
ON payers.id = discounts.id AND ON payers.id = items.id;
您需要两个联接。语法是:
SELECT *
FROM payers p
INNER JOIN discounts d ON d.id = p.id
INNER JOIN items i ON i.id = p.id
旁注:
您没有显示您的实际架构,因此这使用了您尝试中描述的连接条件;你可能需要回顾一下
table 别名使查询更短,更易于阅读
SELECT *
通常不是好的做法;相反,我建议在 SELECT
子句中枚举您想要的列,并适当地别名冲突的列名称(如果有的话)(这里,所有三个 table 都有一个名为 id
的列,它会在结果集中造成歧义)
我最近才了解到 SQL INNER JOIN
我想将它应用到一个项目中所以基本上我有三个表
- 付款人
- 折扣
- 项
现在我只是想知道我是否可以 return 使用 3 个表中的 INNER JOIN
同时获得来自这三个表的结果,或者是否只能使用 2 个表?
如果可以使用 2 个以上表格的 INNER JOIN
那么请指导我如何做,如果不能,请告诉我如何以任何其他可能的方式做。
现在这是我目前的查询,它没有按预期工作:
SELECT *
FROM payers
INNER JOIN discounts AND items
ON payers.id = discounts.id AND ON payers.id = items.id;
您需要两个联接。语法是:
SELECT *
FROM payers p
INNER JOIN discounts d ON d.id = p.id
INNER JOIN items i ON i.id = p.id
旁注:
您没有显示您的实际架构,因此这使用了您尝试中描述的连接条件;你可能需要回顾一下
table 别名使查询更短,更易于阅读
SELECT *
通常不是好的做法;相反,我建议在SELECT
子句中枚举您想要的列,并适当地别名冲突的列名称(如果有的话)(这里,所有三个 table 都有一个名为id
的列,它会在结果集中造成歧义)