2015-02-07 103 views
0

我想列出屬於wordpress mysql數據庫中幾個類別的文章。mysql內部連接的獨特結果

我使用的語句如下:

SELECT * 
FROM wp_term_relationships 
INNER JOIN wp_posts ON wp_term_relationships.term_taxonomy_id IN (12,18,19,20,4161,4157,4160,4168,4183,4185,4188,4190,4192,4195,4199,4200,4202,4205,4332) 
AND wp_term_relationships.object_id = wp_posts.ID 
AND wp_posts.post_status = 'publish' 

的問題是,一些職位被分配到多個類別,我得到了一堆的結果重複的。我如何獲得唯一的帖子。換句話說,如果一個帖子被分配到多個類別,我需要它只在任何一個類別下列出一次。

回答

2

將您需要與DISTINCT聲明一起顯示的字段添加到您的sql中,同時調整您的加入聲明。

SELECT DISTINCT wptr.object_id, 
       wptr.someOtherFields, 
       wp.anotherfield 
    FROM wp_term_relationships wptr 
      INNER JOIN wp_posts wp ON wptr.object_id = wp.ID 
WHERE wptr.term_taxonomy_id IN (12, 18, 19, 20, 4161, 4157, 4160, 
           4168, 4183, 4185, 4188, 4190, 4192, 
           4195, 4199, 4200, 4202, 4205, 4332) 
    AND wp.post_status = 'publish' 

添加DISTINCT子句將自己消除重複項。指定字段是一個很好的實踐。