繁体   English   中英

SQL计数,但排除某些行

[英]SQL count but exclude certain rows

我正在运行一个查询,该查询计算已提交的帖子:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM