phpmyadmin SQL查询-获取包含和不包含特定值的结果

wnvonmuf  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(200)

嘿,我对这个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
nsc4cvqm

nsc4cvqm1#

根据表的语义名称选择,我猜您需要一个到wNfVMterm_taxonomy的INNER JOIN而不是LEFT JOIN(这样您就可以在tt.taxonomy上为某些行保留NULL值:请检查您得到的不同结果集,以获得指导性的原因)。然后,您应该对WHERE子句进行稍微不同的过滤,以选择t.taxonomy等于'course-category'或NULL的所需行。最后但并非最不重要的是,如果您不使用聚合函数,则根本不需要GROUP BY子句。

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 IN ('course-category', NULL);

相关问题