Получить только уникальный post_id при проверке 2 значений столбцов в разных строках одного и того же post_id? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть следующая команда MySQL:

SELECT CASE WHEN pm.meta_key = 'webinar_date' AND pm.meta_value = '20190521' THEN pm.post_id
       ELSE NULL
       END AS pm_post_id
FROM wp_postmeta AS pm
WHERE pm.meta_key = 'start_time' AND CAST(pm.meta_value AS TIME) <= '21:05:44'
ORDER BY NULL;

Я пытаюсь получить уникальные значения post_id, где webinar_date равно 20190521, а время меньше или равно 21: 05: 44.

Согласно этому изображению данных в таблице wp_postmeta, он должен возвращать строки, но вместо этого я получаю все значения NULL.

enter image description here

Что я делаю не так с этим запросом?

1 Ответ

2 голосов
/ 22 мая 2019

По сути, ваш запрос имеет условие AND в pm.meta_key, желая, чтобы оно было одновременно 'webinar_date' и 'start_time' для генерации любых строк с данными. Это не может быть правдой, поэтому все ваши строки содержат NULL для pm_post_id. Вы можете обойти это несколькими способами, например, с JOIN:

SELECT pm.post_id
FROM wp_postmeta pm
JOIN wp_postmeta pm2 ON pm2.post_id = pm.post_id AND pm2.meta_key = 'webinar_date' AND pm2.meta_value = '20190521'
WHERE pm.meta_key = 'start_time' AND CAST(pm.meta_value AS TIME) <= '21:05:44'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...