SQL计数,但排除某些行
问题描述:
我正在计数提交职位查询:SQL计数,但排除某些行
SELECT COUNT(*)
FROM `wp_posts`
WHERE `post_author` = 4
AND `post_type` = 'nf_sub'
AND `post_status` = 'publish'
这将返回所有职位。现在我想在排除_form_id_ = 1这个查询职位:
SELECT *
FROM `wp_postmeta`
WHERE `post_id` = 225
AND `meta_key` = '_form_id'
AND `meta_value` = 1
我怎样才能将二者结合起来成为一个查询只计算行,其中_form_id_不等于1?
答
从这些表中,假设链接字段是wp_posts表中的主键wpposts_id
。
使用下面的内部查询,还有其他方法来实现这一点。
SELECT COUNT(*)
FROM `wp_posts`
WHERE `post_author` = 4
AND `post_type` = 'nf_sub'
AND `post_status` = 'publish'
and `wppost_id` not in (SELECT `wppost_id`
from `wp_postmeta`
WHERE `post_id` = 225
AND `meta_key` = '_form_id'
AND `meta_value` = 1
);
答
这就是答案。感谢所有提供线索的人。
SELECT COUNT(*) FROM `wp_posts` WHERE `post_author` = ".get_current_user_id()." AND `post_type` = 'nf_sub' AND `post_status` = 'publish' AND `ID` NOT IN (SELECT `post_id` FROM `wp_postmeta` WHERE `meta_key` = '_form_id' AND `meta_value` = 1)
为你做你的第一个语句一样,只是筛选两个表之间',其中“_form_id” 1' – Cataklysim
我有一个相关的领域? – McNets
这两张桌子之间的关系是什么? – Krishnakumar