检查同一 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'
我有以下 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'