首页 > 数据库 > mysql教程 > 为什么我的 MySQL LEFT JOIN 只返回一行而不是主表中的所有行?

为什么我的 MySQL LEFT JOIN 只返回一行而不是主表中的所有行?

Susan Sarandon
发布: 2024-12-28 06:01:13
原创
408 人浏览过

Why Does My MySQL LEFT JOIN Only Return One Row Instead of All Rows from the Primary Table?

左连接未返回所有行

原始问题:

涉及左外连接仅返回一行,而不是主表中的所有行。连接条件包括对辅助表中的字段的过滤器。如何选择主表中的所有行,包括辅助表中字段满足过滤条件的值?

解决方案:

问题源于将 WHERE 条件放在 JOIN 之后。通过将其移至 JOIN 子句本身,查询可确保联接仅匹配满足过滤条件的行。这是修改后的查询:

SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
登录后复制

在此查询中,WHERE 条件不再位于 JOIN 之后的单独 WHERE 子句中。相反,它已合并到 JOIN 的 ON 子句中,确保仅连接 pr7.field 为 23 的行。这允许选择 jos_hp_properties 中的所有行,包括那些在 jos_hp_properties2 中没有匹配的行,其中 pr7.value 将为 NULL 值。

以上是为什么我的 MySQL LEFT JOIN 只返回一行而不是主表中的所有行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板