2016-09-24 26 views
0

我真正想要做的是確定wp_postmeta中不存在Yoast SEO焦點關鍵字記錄的所有WordPress帖子ID(來自wp_posts)。這是問題的一個簡化版本:如果某個字段值出現在另一個表中,則從SELECT中排除記錄

enter image description here

想回到T1.id值2,6 - 即:只等於T2.fid,其中T1的T1.id的值。 a =「2」並且其中T2.b不等於「3」。

嘗試:

SELECT DISTINCT id FROM `T1` INNER JOIN `T2` ON `id` = `fid` 
WHERE `a` = "2" AND NOT `b` = "3" ORDER BY ID ASC 

這是行不通的。無論是否包含「AND NOT'b'=」3「,都會返回相同的值。我試圖使'b'=」3「條件消除返回集合中的ID。幫助

THX

回答

0

好了 - 我想我想通了這一點所以首先,張貼的問題的答案是:?!

SELECT DISTINCT `id` FROM `T1` INNER JOIN `T2` 
ON `id` = `fid` 
WHERE `a` = "2" 
AND `fid` NOT IN (SELECT `fid` FROM `T2` WHERE `b` = "3") 
ORDER BY `id` ASC 

而對於你的WordPress SEO的,我的實際目標是獲取所有已發佈的沒有添加Yo Yo SEO關鍵字的帖子的URL(需要工作的帖子) s似乎做的伎倆:

SELECT DISTINCT `ID`, CONCAT("http://mysite/",`post_name`) , `post_type`, `post_status` 
FROM `wp_posts` INNER JOIN `wp_postmeta` ON `post_id` = `ID` 
WHERE `post_type` = "post" AND `post_status` = "publish" 
AND `post_id` NOT IN 
(SELECT `post_id` FROM `wp_postmeta` WHERE `meta_key` = "_yoast_wpseo_focuskw") 
ORDER BY `ID` ASC 

注:該URL假設您的固定鏈接設置是基於「發佈名稱」。

如果您想檢查「頁面」或自定義文章類型,只需將post_type設置爲適當的值即可。

相關問題