学习如何加入MySQL

学习如何加入MySQL,mysql,left-join,Mysql,Left Join,亲爱的各位,我是网络编程的新手,到现在为止,我还学习了MySQL语法。 现在我开始使用LEFT JOIN方法。我知道这种方法用于在两个或多个表之间进行规范化。我在SO中发布了一个问题,然后我收到了一个令我困惑的问题。我已经修改了这个答案,但我仍然感到困惑,因为它只对一个表使用左连接。LEFT JOIN是否可以在一个表中使用?您可以LEFT JOIN一个表本身,就像您可以一个表本身连接一样。您的目的通常会有所不同,因为左连接的具体特征是确保在右侧不存在对应行时输出中有一行;您可以通过检查行的“其他

亲爱的各位,我是网络编程的新手,到现在为止,我还学习了MySQL语法。
现在我开始使用
LEFT JOIN
方法。我知道这种方法用于在两个或多个表之间进行规范化。我在SO中发布了一个问题,然后我收到了一个令我困惑的问题。我已经修改了这个答案,但我仍然感到困惑,因为它只对一个表使用
左连接。
LEFT JOIN
是否可以在一个表中使用?

您可以
LEFT JOIN
一个表本身,就像您可以
一个表本身连接一样。您的目的通常会有所不同,因为
左连接的具体特征是确保在右侧不存在对应行时输出中有一行;您可以通过检查行的“其他部分”(通常来自右侧表的部分)的
NULL
来选择那些以这种方式特别选择的行

例如,考虑一个包含列
ID
、主键、
Name
类别和
成本的表
Product
;您想要了解其类别中最便宜的产品的信息。然后…:

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
是一个“表与自身的左联接”的示例,它将回答“you want”规范(如果一个类别中有多个项目具有相同的最低成本,那么您将获得所有项目——查询实际上为您提供了这些项目,因此它们的类别中没有任何项目更便宜,也没有对相同成本项目的检查;-)