mysql 内连接的唯一结果

Unique results with mysql inner join

我试图在 wordpress mysql 数据库中列出属于多个类别的 post。

我使用的语句如下:

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'

问题是一些 post 被分配到多个类别,我在结果中得到了一堆重复项。我如何获得唯一的 posts。换句话说,如果一个 post 被分配到多个类别,我需要它在任何类别下只列出一次。

将您需要与 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 子句本身将消除重复项。指定字段是一个好习惯。