mysql - Wordpress/MySql 查询未从 JOIN 的 LEFT 部分生成所有结果

标签 mysql wordpress join left-join

我在 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/

相关文章:

java - Hibernate 一对一关系表中的键问题

mysql - 条件联合 - 如果第一个查询不返回行,则执行第二个查询

MYSQL UNION JOIN SUM(amount) 输出两个结果而不是一个

javascript - jQuery 插件未定义,尽管已正确包含在我的 js 代码之前

Mysql - 左连接所有表

MYSQL连接困惑

php - 在优化查询方面需要帮助

wordpress - 如何用moodle和wordpress博客实现SSO?

php - system() has been disabled 错误信息

mysql - 根据相关表从另一列更新一列