【问题标题】:Learning LEFT JOIN in MySQL在 MySQL 中学习 LEFT JOIN
【发布时间】:2011-04-09 00:22:39
【问题描述】:

亲爱的 all.i web 编程新手,直到现在我仍然学习 MySQL 语法。 现在我开始使用LEFT JOIN 方法。我知道这种方法用于在两个或多个表之间进行规范化。我在 SO 中发布了一个问题,然后我收到了一个 Answer,这让我感到困惑。我已经修改了那个答案,但我仍然感到困惑,因为它只为一张桌子使用LEFT JOINLEFT JOIN是否可以在一张表中使用?

【问题讨论】:

    标签: mysql left-join


    【解决方案1】:

    你可以LEFT JOIN 一个表和它自己,就像你可以JOIN 一个表和它自己一样。您的目的通常会有所不同,因为LEFT JOIN 的具体特征是确保在右侧没有相应行时输出中的一行,当然;您可以通过检查NULL 来选择那些专门以这种方式选择的行,以查找该行的“其他部分”,该部分通常来自右侧表格。

    考虑例如一个表Product,其列ID、主键、NameCategoryCost;您想要有关其类别中最便宜的产品的信息。然后……:

    SELECT P1.Name, P1.Category, P1.Cost
      FROM Product AS P1
      LEFT JOIN Product AS P2
      ON (P1.Category = P2.Category and P1.Cost > P2.Cost)
      WHERE P2.ID IS NULL
    

    是“表与自身的左连接”的示例,它将回答“您想要的”规范(如果多个项目在一个类别中具有相同的最低成本,您将获得它们全部 -查询实际上为您提供了这样的项目,使得它们类别中的任何项目都更便宜,并且没有检查 equal 成本的项目;-)。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多