2017-02-24 116 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)