MySQL:如果meta_key不存在则返回帖子

dco*_*bus 1 mysql sql wordpress metadata meta-key

我有一个查询,如果 meta_key 存在且不是 '',则返回宠物帖子:

-- Pets that are assigned tags
SELECT p.ID
FROM FxFfekP0_posts p LEFT JOIN FxFfekP0_postmeta pm
ON p.ID = pm.post_id
WHERE p.post_type = 'pets'
AND pm.meta_key = 'tag'
AND pm.meta_value != ''
Run Code Online (Sandbox Code Playgroud)

但现在我需要获取一个结果集,其中包含根本不包含meta_keytag或meta_key tag= '' 的帖子...

帮助?

Hob*_*obo 5

像这样的东西应该有效:

SELECT p.ID
FROM FxFfekP0_posts p LEFT JOIN FxFfekP0_postmeta pm
ON p.ID = pm.post_id AND pm.meta_key = 'tag'
WHERE p.post_type = 'pets'
AND ifnull(pm.meta_value, '') = ''
Run Code Online (Sandbox Code Playgroud)

我已将 移入pm.meta_key = 'tag'连接条件,因此缺失的行仍然出现在结果集中(如NULLs);thenifnull()允许单个条件同时获取NULLs 和空字符串。