mysql - 如果列值不存在,则不要加入表

标签 mysql sql

SELECT
`wp_emu_theme_contact_page`.`firstName`
, `wp_emu_theme_contact_page`.`city`
, `wp_emu_theme_contact_page`.`state`
, `wp_posts`.`post_content`
, `wp_posts`.`post_date`
, `wp_posts`.`post_type`
, `wp_posts`.`ID`
, `wp_emu_theme_testimonials`.`permission`
, `wp_emu_theme_testimonials`.`userID`
, `wp_users`.`user_login`
, `wp_usermeta`.`meta_value`
FROM
 `wp_emu_theme_testimonials`
INNER JOIN  `wp_emu_theme_contact_page` 
    ON (`wp_emu_theme_testimonials`.`contactID` = `wp_emu_theme_contact_page`.`dbID`)
INNER JOIN  `wp_posts` 
    ON (`wp_emu_theme_testimonials`.`postID` = `wp_posts`.`ID`)
LEFT JOIN  `wp_users` 
    ON (`wp_emu_theme_testimonials`.`userID` = `wp_users`.`ID`)
INNER JOIN  `wp_usermeta` 
    ON (`wp_usermeta`.`user_id` = `wp_users`.`ID`)
WHERE (`wp_posts`.`post_type` ='testimonial'
AND `wp_usermeta`.`meta_key` ='facebook_uid')
OR (`wp_usermeta`.`meta_key` = 'null');

问题是表 wp_usermeta 可能没有 meta_key = 'facebook_uid'。在那种情况下,我没有得到这些条目。我想得到所有其他的东西,即使 meta_key 对于 user_id 不存在。如果确实如此,那就太好了。如果我取出有关该表的部分,此查询将按预期工作。我试过没有 OR。我正在使用 mysql。

最佳答案

听起来您想使用 LEFT JOIN 并使 ON 的条件部分:

LEFT JOIN  `wp_usermeta` 
    ON (`wp_usermeta`.`user_id` = `wp_users`.`ID`
        AND `wp_usermeta`.`meta_key` ='facebook_uid')

关于mysql - 如果列值不存在,则不要加入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11877218/

相关文章:

java - 删除查询失败后 JPA 合并

mysql - MySQL 命令中的双 ASC

mysql - 非常慢的 mysql 查询 : left join multiple table and where clause for each table

mysql - 如何测量 "queries per second"?

mysql - 如何通过设置另一个表的值来创建 MySQL 语句以插入到表中

php - 如何在MySQL中连接两个表并显示结果?

php - 在php中发布数组数据foreach循环

mysql - xmalloc : cannot allocate 16 bytes copying mysql database from 1 remote to another

mysql - 根据参数选择 null 或非 null

Mysql查询涉及多张表和一个OR语句