mysql - SQL 计数但排除某些行

标签 mysql

我正在运行一个对提交的帖子进行计数的查询:

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
                          );

关于mysql - SQL 计数但排除某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440223/

相关文章:

mysql - 插入错误 #1452 - 无法添加或更新子行 : a foreign key constraint fails

c# - Entity Framework MySQL DbContext 无法连接

mysql - 在 MySQL 中连接多个表以获得不相等的值

php 数组没有给出我期望的结果

php - 防止多次查询PDO

php - 如何使用数组中的参数从数据库中获取结果?

java - 在Java中解析日期时间格式并将其从csv文件转换为mysql

php - 我如何在 Joomla 3 中对逗号分隔的字段进行 MySQL 查询?

mysql - SQL COUNT 没有给我正确的结果

MySQL 8 - 删除特定数据库中的所有存储过程