2017-02-24 117 views
0

我正在计数提交职位查询: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?

+0

为你做你的第一个语句一样,只是筛选两个表之间',其中“_form_id” <> 1' – Cataklysim

+1

我有一个相关的领域? – McNets

+0

这两张桌子之间的关系是什么? – Krishnakumar

回答

0

从这些表中,假设链接字段是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 
         ); 
0

这就是答案。感谢所有提供线索的人。

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)