【问题标题】:Perform an INNER JOIN with more than 2 tables in MySQL在 MySQL 中对超过 2 个表执行 INNER JOIN
【发布时间】:2021-03-08 05:23:44
【问题描述】:

我最近刚刚了解了 SQL INNER JOIN,我想将它应用到一个项目中,所以基本上我有三个表

  • 付款人
  • 折扣
  • 项目

现在我只是想知道是否可以同时使用 INNER JOIN 和 3 个表同时返回这三个表的结果,还是只能使用 2 个表?

如果可以将INNER JOIN 与超过 2 个表一起使用,请指导我如何操作,如果不能,请告诉我如何以任何其他可能的方式操作。

现在这是我目前的查询,但无法按预期工作:

SELECT *
FROM payers
INNER JOIN discounts AND items
ON payers.id = discounts.id AND ON payers.id = items.id;

【问题讨论】:

  • 这当然是可能的。请向我们展示这三个表中的示例数据,以及所需的结果以及您当前的尝试。
  • 一个联接链接两个表,但您可以有任意多个联接
  • @GMB 当然我会把它们包括在这里
  • @HoneyBadger 对不起,我不明白你的意思,你能在具体答案中解释一下吗?
  • @GMB 我添加了我目前必须这样做的查询,不需要样本数据,因为我使用 SELECT * 它会自动选择所有我知道拼写出来的表是一种更好的做法,但它仍然是只是一个表格数量较少的小项目,所以我使用 * 来节省时间。

标签: mysql sql join inner-join


【解决方案1】:

您需要两个联接。语法是:

SELECT *
FROM payers p
INNER JOIN discounts d ON d.id = p.id
INNER JOIN items     i ON i.id = p.id

旁注:

  • 您没有显示您的实际架构,因此这使用了您尝试中描述的连接条件;你可能需要检查一下

  • 表别名使查询更短,更易于阅读

  • SELECT * 通常不是好的做法;相反,我建议在 SELECT 子句中枚举您想要的列,并正确地为冲突的列名称(如果有)进行别名(这里,所有三个表都有一个名为 id 的列,这会导致结果集中的歧义)

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多