嘿,我对这个SQL查询主题还很陌生。我创建了这个查询来获取类型为“course”的帖子和它们的“course-category”。它是有效的,但我也需要没有course-category的帖子。我想我需要所有tt.taxonomy ='course-category'
的帖子和所有没有这个特定分类的帖子。或者换句话说,所有没有这个分类值为“course-category”的帖子。怎么能做到这一点呢?只要我添加标记的部分,我就没有得到任何结果...
SELECT
p.post_title,
t.name,
tt.taxonomy
FROM wNfVMposts p
LEFT JOIN wNfVMterm_relationships tr
ON p.ID=tr.object_id
LEFT JOIN wNfVMterm_taxonomy tt
ON tr.term_taxonomy_id=tt.term_taxonomy_id
LEFT JOIN wNfVMterms t
ON tt.term_id=t.term_id
WHERE p.post_status = 'publish'
AND p.post_type= 'course'
AND tt.taxonomy ='course-category'
**AND tt.taxonomy IN ('course-category') IS NULL**
GROUP BY p.ID
1条答案
按热度按时间nsc4cvqm1#
根据表的语义名称选择,我猜您需要一个到wNfVMterm_taxonomy的INNER JOIN而不是LEFT JOIN(这样您就可以在tt.taxonomy上为某些行保留NULL值:请检查您得到的不同结果集,以获得指导性的原因)。然后,您应该对WHERE子句进行稍微不同的过滤,以选择t.taxonomy等于'course-category'或NULL的所需行。最后但并非最不重要的是,如果您不使用聚合函数,则根本不需要GROUP BY子句。