从 MySQL 中缺少对应关系的多个表中进行选择
有效地跨多个表进行查询,即使在一个表中并非所有行的情况下也是如此另一个有相应的条目,MySQL提供了外连接的概念。考虑一个带有类别和产品表的在线商店的场景。
假设我们要检索所有类别并计算每个类别的最低和最高价格。但是,我们希望包含没有任何产品的类别,并将其最低和最高价格设置为 0。原始查询:
SELECT sc.*, MIN(s.price) AS minp, MAX(s.price) AS maxp FROM categories AS sc, products AS s WHERE s.ownerid=sc.id GROUP BY sc.id
由于内连接条件而排除没有产品的类别。为了包含所有类别,我们使用 LEFT JOIN:
SELECT sc.*, IFNULL(MIN(s.price), 0) AS minp, IFNULL(MAX(s.price), 0) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
LEFT JOIN 保留类别 (sc) 表中的所有行,允许查询检索所有类别,包括那些没有产品的类别。 IFNULL 函数将空值(当没有相应产品时出现)设置为 0,确保 minp 和 maxp 始终返回有效值。
此方法可确保查询检索所有类别,无论是否有对应的产品,并且正确地为缺失的价格信息分配0。
以上是如何在MySQL中检索所有分类及其最低/最高产品价格,包括没有产品的分类?的详细内容。更多信息请关注PHP中文网其他相关文章!