首页 >数据库 >mysql教程 >如何从两个缺少通讯者的 MySQL 表中检索数据?

如何从两个缺少通讯者的 MySQL 表中检索数据?

Linda Hamilton
Linda Hamilton原创
2024-12-04 03:36:11823浏览

How to Retrieve Data from Two MySQL Tables with Missing Correspondents?

从 MySQL 中缺少对应项的两个表中进行选择

从 MySQL 中的两个表中检索数据并处理其中并非所有行都在一个表中的情况另一个表中有对应的行,您可以使用外连接。这种方法不同于过时的隐式联接方法,并提供了更大的灵活性。

考虑以下示例:

您有两个表,类别(包含列 id 和标题)和产品(包含列 id) ,ownerid,标题和价格,其中ownerid引用类别表中的id)。

您的查询旨在检索所有类别及其最低和最高价格,按类别 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 确保包含类别表中的所有行,即使产品表中没有相应的行。 IFNULL 函数将 0 分配给没有产品的类别的 minp 和 maxp,从而防止显示 NULL 值。

或者,您可能更愿意为这些类别返回 NULL 而不是 0,具体取决于您的具体要求。

以上是如何从两个缺少通讯者的 MySQL 表中检索数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn