检查同一 post_id 的不同行中的 2 个列值时,仅获取唯一性 post_id?

Get only unique post_id when checking 2 column values in different rows of the same post_id?

我有以下 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 table 中的数据图像,它应该 return 行,但我得到的是所有 NULL 值。

我在这个查询中做错了什么?

实际上您的查询在 pm.meta_key 上有一个 AND 条件,希望它同时是 'webinar_date''start_time' 以生成任何行数据。这不可能是真的,所以您的所有行都包含 NULL for 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'