2010-11-12 70 views
0

我第一次查詢交叉口的MySQL

SELECT ID FROM wp_posts 
WHERE post_type = 'post' AND post_status = 'publish' 
AND ID IN (Select object_id FROM wp_term_relationships, wp_terms 
      WHERE wp_term_relationships.term_taxonomy_id =18) 
ORDER BY post_date DESC 

農產品結果

31 and 28 

和我的第二個查詢

SELECT ID FROM wp_posts 
WHERE post_type = 'post' AND post_status = 'publish' 
AND ID IN (Select object_id FROM wp_term_relationships, wp_terms 
      WHERE wp_term_relationships.term_taxonomy_id =8) 
ORDER BY post_date DESC 

會產生

31 and 33 

我需要得到兩個查詢result.ie,31的交集。我們怎樣才能用mysql

回答

0

的相交無非是內部連接多,其實:

select 
    a.ID as ID 
from 
    (SELECT ID FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND ID IN (Select object_id FROM wp_term_relationships, wp_terms WHERE wp_term_relationships.term_taxonomy_id =8 or wp_term_relationships.term_taxonomy_id =18)) as a, 
    (SELECT ID FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' AND ID IN (Select object_id FROM wp_term_relationships, wp_terms WHERE wp_term_relationships.term_taxonomy_id =18 or wp_term_relationships.term_taxonomy_id =18)) as b 
where 
    a.ID=b.ID 

從我的頭頂。我只是複製&粘貼你的查詢,順便說一句。

+0

偉大謝謝! – abhis 2010-11-12 12:42:07

0

一個簡單的方式,它會是這樣:

SELECT FROM (that entire first query) WHERE ID IN (that entire second query) 

我並沒有關於它的效率的承諾...

0

您的查詢不知何故不明。 看看第二個查詢。 您有以下

wp_term_relationships.term_taxonomy_id =18 OR 
wp_term_relationships.term_taxonomy_id =18 
0

嗯路口 - 嘗試內部聯接:P