1

我有一个查询,如果 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 != ''

但现在我需要得到一个结果集,其中包含根本不包含 meta_keytag或 meta_key tag= '' ...

帮助?

4

2 回答 2

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, '') = ''

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

于 2016-09-03T04:35:12.653 回答
0

我相信这将适用于我正在寻找的东西......除非有人能指出这个查询失败的地方:

SELECT p.ID
FROM FxFfekP0_posts p
LEFT JOIN FxFfekP0_postmeta pm ON pm.post_id = p.ID 
AND pm.meta_key = 'tag'
WHERE p.post_type = 'pets'
AND pm.meta_key IS NULL 
OR pm.meta_value = ''
于 2016-09-06T20:28:01.297 回答