左联接未返回所有行:解决问题
如上一个线程中所述,左联接中不存在所有行查询可能源于放置不当的 WHERE 子句。在本例中,查询旨在从“jos_hp_properties”表中提取数据,并根据字段列等于 23 选择性地从“jos_hp_properties2”表中选择名为“room_price_high”的值。
要解决此问题发出并确保从第一个表返回所有行,WHERE 条件应在 LEFT OUTER 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
通过在 JOIN 中合并 WHERE 条件,查询变得更加明确,并指示数据库仅从第二个表中检索字段列等于 23 的行这可确保返回第一个表中的所有行,无论第二个表中是否存在匹配值。因此,根据 field=23 条件,第一个表中的行将返回第二个表中没有匹配行的相应 NULL 值。
以上是为什么我的左连接不返回左表中的所有行?的详细内容。更多信息请关注PHP中文网其他相关文章!