MySQL 查询以获取 post_id 和特征图像 URL
MySQL query to get post_id and feature image URL
WordPress 将 post 和 post 的特色图片视为两个独立的 post,这似乎无法创建 SELECT 查询将 post 和 post 的图像 URL 放入同一行,如下所示:
post_id imageURL
100 [URL]
如何合并 MySQL table 中没有具有共同值的列的两行?一列中的值与另一列中的值关联。
meta_id post_id meta_key meta_value
100 250 _thumbnail_id 101
101 255 _wp_attached_file [URL]
...得到这样的结果
post_id imageURL
100 [URL]
WordPress 似乎已经更改了它的数据库结构,因为这个问题在这个网站上得到了回答。
我试图理解 MySQL 中的原理,当“Group by
”不可用时,从一行中获取值并将其显示在另一行中。
观看视频、反复试验、阅读此处的答案几个小时后,这个查询只让我解决了一半,但 Post ID 或图像 URL 是总是失踪。我无法合并两行以将 Post 与其图像 URL.
合并
SELECT * FROM `wp_postmeta`
INNER JOIN wp_posts on wp_posts.id = wp_postmeta.post_id
WHERE wp_postmeta.meta_key = "_wp_attached_file"
ORDER BY `wp_postmeta`.`post_id` DESC
请帮忙。可能有一些简单的语法可以实现这一点,但我缺少它。查询通过 WP API 进入,因此使用原始 SQL 查询,而不是 WordPress 中可用的功能。
您正在尝试根据 post_id
和 meta_value
的值获取数据,因此可以使用 Self JOIN
来实现
这是工作示例 MySQL 查询
SELECT p.id AS post_id, pm2.meta_value AS URL
FROM `wp_posts` AS p
INNER JOIN `wp_postmeta` AS pm1 ON p.id = pm1.post_id
INNER JOIN `wp_postmeta` AS pm2 ON pm1.meta_value = pm2.post_id
AND pm2.meta_key = '_wp_attached_file'
AND pm1.meta_key = '_thumbnail_id'
ORDER BY p.id DESC;
希望对您有所帮助!
答案来自 Raunak Gupta,非常感谢 Raunak。这是解决它的代码。
SELECT p.id AS post_id, p.post_title, concat('https://www.ourdomain.com','/wp-content/uploads/',pm2.meta_value) AS URL
FROM `wp_posts` AS p
INNER JOIN `wp_postmeta` AS pm1 ON p.id = pm1.post_id
INNER JOIN `wp_postmeta` AS pm2 ON pm1.meta_value = pm2.post_id
AND pm2.meta_key = '_wp_attached_file'
AND pm1.meta_key = '_thumbnail_id'
ORDER BY p.id DESC
创建此 MySQL 查询所需的关键原则是自连接。
WordPress 将 post 和 post 的特色图片视为两个独立的 post,这似乎无法创建 SELECT 查询将 post 和 post 的图像 URL 放入同一行,如下所示:
post_id imageURL
100 [URL]
如何合并 MySQL table 中没有具有共同值的列的两行?一列中的值与另一列中的值关联。
meta_id post_id meta_key meta_value
100 250 _thumbnail_id 101
101 255 _wp_attached_file [URL]
...得到这样的结果
post_id imageURL
100 [URL]
WordPress 似乎已经更改了它的数据库结构,因为这个问题在这个网站上得到了回答。
我试图理解 MySQL 中的原理,当“Group by
”不可用时,从一行中获取值并将其显示在另一行中。
观看视频、反复试验、阅读此处的答案几个小时后,这个查询只让我解决了一半,但 Post ID 或图像 URL 是总是失踪。我无法合并两行以将 Post 与其图像 URL.
合并SELECT * FROM `wp_postmeta`
INNER JOIN wp_posts on wp_posts.id = wp_postmeta.post_id
WHERE wp_postmeta.meta_key = "_wp_attached_file"
ORDER BY `wp_postmeta`.`post_id` DESC
请帮忙。可能有一些简单的语法可以实现这一点,但我缺少它。查询通过 WP API 进入,因此使用原始 SQL 查询,而不是 WordPress 中可用的功能。
您正在尝试根据 post_id
和 meta_value
的值获取数据,因此可以使用 Self JOIN
这是工作示例 MySQL 查询
SELECT p.id AS post_id, pm2.meta_value AS URL
FROM `wp_posts` AS p
INNER JOIN `wp_postmeta` AS pm1 ON p.id = pm1.post_id
INNER JOIN `wp_postmeta` AS pm2 ON pm1.meta_value = pm2.post_id
AND pm2.meta_key = '_wp_attached_file'
AND pm1.meta_key = '_thumbnail_id'
ORDER BY p.id DESC;
希望对您有所帮助!
答案来自 Raunak Gupta,非常感谢 Raunak。这是解决它的代码。
SELECT p.id AS post_id, p.post_title, concat('https://www.ourdomain.com','/wp-content/uploads/',pm2.meta_value) AS URL
FROM `wp_posts` AS p
INNER JOIN `wp_postmeta` AS pm1 ON p.id = pm1.post_id
INNER JOIN `wp_postmeta` AS pm2 ON pm1.meta_value = pm2.post_id
AND pm2.meta_key = '_wp_attached_file'
AND pm1.meta_key = '_thumbnail_id'
ORDER BY p.id DESC
创建此 MySQL 查询所需的关键原则是自连接。