LEFT JOIN
方法。我知道这个方法用于在两个或多个表之间进行规范化。我在SO中发布了一个问题,然后收到Answer这让我感到困惑。我已修改了这个答案,但我仍然感到困惑,因为它仅对一个表使用LEFT JOIN
。 LEFT JOIN
是否可以在一个表中使用?
答案 0 :(得分:4)
你可以LEFT JOIN
一张桌子,就像你可以JOIN
一张桌子一样。你的目的通常是不同的,因为LEFT JOIN
的特定特征是当右边没有相应的行时确保输出中的一行,当然;您可以通过检查行的“其他部分”的NULL
来选择那些专门选择的行,这部分通常来自右侧表。
例如,考虑一个包含Product
列,主键,ID
,Name
和Category
的表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
是“表格自身的左连接”的一个例子,它将回答“你想要的”规范(如果一个类别中的多个项目具有相同的最低成本,你将全部获得它们 - 查询实际上为您提供了这样的项目:其类别中的项目更便宜并且没有检查相等成本的项目; - )。