mysql - 选择不同表中没有特定值的所有行

标签 mysql sql wordpress

这是一个wordpress安装,但我认为这个问题更多的是一个一般的sql问题。首先,我的 sql 技能不是很好(我什至不知道我是否遵循正确的格式来说明数据库)。

我有两张 table :

wp_posts :

    ID (pk)  |   post_name  |  ...
----------------------------
    45       |    "Hello"
    91       |    "Funny"
    16       |    "Wheat"

wp_postmeta :

    post_id (fk)  |    meta_key      |   meta_value  | ...
------------------------------------------------
    45            |    "_edit_lock"  |   5789789834
    45            |    "fizzbizz"    |   "foobar"
    91            |    "_something"  |   "teve"

我想选择 wp_posts 中的所有行,其中 wp_postmeta 中没有对应的行,其中 meta_key =“fizzbizz”

我最初有这个查询,但有人指出在上述情况下它不会检索 ID = '16'。我如何正确编写查询?

$pageposts = $wpdb->get_results("
    SELECT * FROM wp_posts p 
    JOIN wp_postmeta m 
    ON p.ID = m.post_id 
    WHERE m.meta_key <> 'fizzbizz' 
    ORDER BY p.post_date DESC;
");

最佳答案

使用当前查询并进行以下更改:

LEFT JOIN 而不是 JOIN

添加

OR m.metakey IS NULL 到您的 WHERE 子句:

SELECT * FROM wp_posts p 
    LEFT JOIN wp_postmeta m 
    ON p.ID = m.post_id 
    WHERE m.meta_key <> 'fizzbizz'
       OR m.metakey IS NULL
    ORDER BY p.post_date DESC;

关于mysql - 选择不同表中没有特定值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627917/

相关文章:

mysql - Node mysql检查和更新foreach循环

php - 建立类似 Omegle 的东西

用于将单个表导出到 SQL 文件的 PHP 脚本

javascript - WP API 获取帖子标签

mysql - 站点定期崩溃并出现错误 "Mysql connect error [localhost]: (2002) Connection refused (400)"

sql - 根据其他两个表的比较更新列中的值

MySQL 在一个表中,但不在具有特定 ID 的另一表中 - 查询给出太多结果?

php - 在 wordpress 中安装 jquery 插件?

html - 客户在 WordPress header 中添加了一张图片,但未正确对齐

MYSQL 帮助需要连接具有多个结果的 2 个表