gpt4 book ai didi

数据库 |左加入 wp_posts 和 wp_postmeta

转载 作者:行者123 更新时间:2023-11-29 00:34:59 26 4
gpt4 key购买 nike

我喜欢 LEFT JOIN 两个表 wp_posts 和 wp_postmeta。在我的帖子中,我创建了几个元框选项。

假设我创建了一个名为“广告”的自定义帖子类型,并且对于每个广告,我都将发布日期和到期日期作为元选项。

问题是,我如何从当前日期高于帖子元表中的开始日期且低于到期日期的 wp_posts 表中加入这两个表,以便获得帖子的 ID在帖子元表中。

对于非 WP 用户,wp_posts 表是一个传统的表,其中每一行代表一个帖子,而 wp_postmeta 是一个键值对表,其中基于帖子 ID,包含多行来描述帖子的元选项.

有没有办法在单个 MySQL 查询中进行该查询?

亲切的问候。

最佳答案

我认为“开始日期”是“publication_date”。

如果没有模式定义,我会猜测列名和数据类型

一种方法是在 EXISTS 谓词中使用相关子查询,尽管这可能不是最有效的方法:

SELECT p.id
FROM wp_posts p
WHERE EXISTS
( SELECT 1
FROM wp_postmeta m1
WHERE m1.wp_posts_id = p.id
AND m1.meta_option_name = 'publication date'
AND m1.meta_option_date_value <= NOW()
)
AND EXISTS
( SELECT 1
FROM wp_postmeta m2
WHERE m2.wp_posts_id = p.id
AND m2.meta_option_name = 'expiration date'
AND m2.meta_option_date_value > NOW()
)

您特别询问了有关使用 LEFT JOIN 的问题

使用 LEFT JOIN 操作可以获得等效的结果(尽管此查询实际上等效于执行 INNER JOIN 操作):

SELECT p.id
FROM wp_posts p
LEFT
JOIN wp_postmeta m1
ON m1.wp_posts_id = p.id
AND m1.meta_option_name = 'publication date'
AND m1.meta_option_date_value <= NOW()
LEFT
JOIN wp_postmeta m2
ON m2.wp_posts_id = p.id
AND m2.meta_option_name = 'expiration date'
AND m2.meta_option_date_value > NOW()
WHERE m1.id IS NOT NULL
AND m2.id IS NOT NULL
GROUP
BY p.id

关于数据库 |左加入 wp_posts 和 wp_postmeta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14762650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com