我相信有更好的方法,但此查询应该满足您的需要:
SELECT DISTINCT meta_value FROM wp_postmeta pm
WHERE meta_key = \'Driver\'
AND NOT EXISTS (SELECT * FROM wp_term_relationships tr
JOIN wp_term_taxonomy tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
JOIN wp_terms t ON t.term_id = tt.term_id
WHERE pm.post_id = tr.object_id
AND tt.taxonomy = \'category\'
AND t.name = \'ExcludeMeCategory\');
将其转换为php时,应使用
$wpdb
表名称的别名,即。
$wpdb->postmeta
,
$wpdb->term_relationships
,
$wpdb->term_taxonomy
,
$wpdb->terms
. 您可能还应该分析这个查询,以确保它在合理的时间内执行,并且没有进行全表扫描,等等。我手头没有一个具有代表性的数据库来测试它。
最后,我不太了解分类法:这可能是不完整的w.r.t.例如,分类法层次结构,首先查询分类法ID,然后将其放入查询中以代替wp_terms_taxonomy
在查询中向前。