从 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中文网其他相关文章!