当前位置:  开发笔记 > 后端 > 正文

MySQL LEFT JOIN问题 - 缺少LEFT列

如何解决《MySQLLEFTJOIN问题-缺少LEFT列》经验,为你挑选了1个好方法。

我遇到了用于显示自定义配置文件字段和任何(可选)相应值的SQL查询的问题.

这是我正在使用的SQL查询:

SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
LEFT JOIN `profile_values` AS pv ON (pf.`id` = pv.`field_id`)
WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d') AND (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
ORDER BY pf.`order` ASC

我遇到的问题是,任何没有相应profile_values记录的列都不显示,只显示它们,但只显示空值.

非常感谢!



1> Eran Galperi..:

尝试将配置文件值条件移动到JOIN语句:

 SELECT pf.`id`, pf.`name`, pv.`value` FROM `profile_fields` AS pf
 LEFT JOIN `profile_values` AS pv ON (
         pf.`id` = pv.`field_id`  AND 
         (pv.`user_id` = '%d' OR pv.`user_id` IS NULL)
  )
 WHERE (pf.`site_id` = '0' OR pf.`site_id` = '%d')
 ORDER BY pf.`order` ASC

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有