admin

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

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。


阅读 134

收藏
2021-07-01

共1个答案

admin

听起来您想使用它LEFT JOIN并使其成为条件部分ON

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