我在 MySQL 数据库中工作。
我在 Wordpress 数据库中添加了一个名为“short_url”的自定义字段
我想要数据库中所有帖子的列表以及“short_url”的值(如果帖子具有该值)。但我还是想要所有的帖子。我编写了以下查询并使用了 LEFT 连接,这样即使没有相应的自定义值我也能取回所有帖子,但它不起作用。
SELECT
wp_posts.post_title
, wp_posts.post_date
, wp_postmeta.meta_value
FROM
wp_posts
LEFT JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id)
WHERE (wp_postmeta.meta_key ="short url");
此查询返回 12 个结果,这是有多少篇文章具有自定义值,但我的数据库中有 193 篇文章。
为什么我返回的是一个只有具有“short_url”值的帖子的列表?
如何获得完整列表?
最佳答案
您需要将条件从 WHERE
子句移动到 ON
子句。 WHERE 子句中的条件会影响所有结果。 ON 子句中的条件会影响 JOIN。
SELECT
wp_posts.post_title,
wp_posts.post_date,
wp_postmeta.meta_value
FROM
wp_posts
LEFT JOIN wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id) AND
(wp_postmeta.meta_key ="short url");
关于mysql - Wordpress/MySql 查询未从 JOIN 的 LEFT 部分生成所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991040/