我试图弄清楚为什么此查询返回所有帖子类型,而不仅仅是返回指定的类型。任何帮助都会有所帮助。
SELECT DISTINCT wp_posts.*
FROM wp_posts, wp_term_relationships, wp_terms, wp_term_taxonomy
WHERE 1=1
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_terms.term_id = wp_term_taxonomy.term_id
AND wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
AND wp_posts.post_type IN ('insight')
AND wp_posts.post_status = 'publish'
AND wp_posts.post_status != 'private'
AND wp_posts.post_status != 'future'
AND wp_posts.post_status != 'trash'
AND wp_terms.slug LIKE '%great%'
OR wp_posts.post_content LIKE '%great%'
LIMIT 0, 10
答案 0 :(得分:1)
您的问题可能出在您的OR
中,您应该在括号OR
中使用()
。在执行操作时,查询将忽略之前的所有子句。试试这个:
AND ( wp_terms.slug LIKE '%great%' OR wp_posts.post_content LIKE '%great%' )