在MySQL学习LEFT JOIN

时间:2010-09-07 04:12:58

标签: mysql left-join

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

1 个答案:

答案 0 :(得分:4)

你可以LEFT JOIN一张桌子,就像你可以JOIN一张桌子一样。你的目的通常是不同的,因为LEFT JOIN的特定特征是当右边没有相应的行时确保输出中的一行,当然;您可以通过检查行的“其他部分”的NULL来选择那些专门选择的行,这部分通常来自右侧表。

例如,考虑一个包含Product列,主键,IDNameCategory的表Cost;您想了解有关其类别中最便宜的产品的信息。然后...

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

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