У меня есть запрос, который возвращает животное пост, если meta_key существует и не «»:MySQL: возвращают сообщения, если 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_key tag
, либо meta_key tag
= '' ...
Помощь?
Если я объяснил переместив условие в объединение плохо, просто сравнить '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'' с' 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 = 'post''. Последнее должно возвращать намного больше строк, что важно, включая те сообщения без записей тегов в таблице postmeta. – Hobo
Мне в основном нужно отделить эти два. Мне нужно знать, у каких домашних животных есть тег (где тег существует и не является пустым или NULL) ... и затем знайте, у каких домашних животных нет тега (вообще нет значения) или запись тега пустая. – dcolumbus
Я немного потерял. У вас есть первый запрос (вы отправили его в вопрос); этот запрос возвращает второй результирующий набор (именно это вы специально задали) - сообщения, чьи теги отсутствуют или пусты. Если это не сработало для вас, потому что у меня был неправильный тип сообщения от моего тестирования (теперь исправлено)? – Hobo