0

在网站的主页中,我需要返回博客的最后 3 篇文章,这些文章是用 wordpress 创建的。

我有这个代码:

SELECT p.post_title, p.post_date, p.post_content, wpr.object_id, dt_blog_terms.name,        dt_blog_terms.slug
FROM dt_blog_terms
INNER JOIN dt_blog_term_taxonomy ON dt_blog_terms.term_id = dt_blog_term_taxonomy.term_id
INNER JOIN dt_blog_term_relationships wpr ON wpr.term_taxonomy_id = dt_blog_term_taxonomy.term_taxonomy_id
 INNER JOIN dt_blog_posts p ON p.ID = wpr.object_id
 WHERE taxonomy = 'category'
 AND p.post_type = 'post'
 AND p.post_status = 'publish'
 AND slug != 'notizie-notifiche'
 ORDER BY `post_date` DESC
 LIMIT 3

如您所见,我有一个要排除的分类(notizie-notifiche)。这个 sql 字符串有效,但是当帖子有多个类别时我会遇到问题。在这种情况下,每个类别都返回一次,而我只想显示一次。

任何想法?我以为我可以使用 DISTINCT,但它似乎不适用于这种 SELECT 语句。

4

1 回答 1

1

我可以告诉你你需要做什么,但我不能修改查询来完成它。您在问题中使用了“类别”一词,但数据中没有该名称的字段。

您需要在所需级别聚合数据,然后包含一个having子句。以下group by可能会解决您的问题:

group by p.id
having sum(case when slug = 'notizie-notifiche' then 1 else 0 end) = 0
于 2013-04-22T20:40:58.010 回答