这是一个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/