这个wordpress SQL查询有什么问题?

这个wordpress SQL查询有什么问题?,sql,wordpress,Sql,Wordpress,我在WordPress网站上有此查询: SELECT post.*,postr.* FROM `wp_posts` as post INNER JOIN wp_term_relationships postr on post.ID=postr.object_id WHERE postr.term_taxonomy_id IN(".$implode.") AND post_status='publish' AND post_type='product' GROUP BY ID 其中$

我在WordPress网站上有此查询:

SELECT post.*,postr.* 
FROM `wp_posts` as post 
INNER JOIN wp_term_relationships postr on post.ID=postr.object_id 
WHERE postr.term_taxonomy_id IN(".$implode.") 
AND post_status='publish' 
AND post_type='product' 
GROUP BY ID
其中$IMPODE是由3个数字组成的字符串,例如:4,5,23

我遇到的问题是,这些数字是从3个下拉列表的选择ID中获取的,但一次似乎只有一个用于过滤。例如,4,3,21将返回与4,0,0相同的值,而0,5,0将返回与0,5,25相同的值。我的问题出了什么问题?在这里不合适吗


提前感谢您的帮助。

只需将postr.term\u taxonomy\u id按节添加到组中,您将获得:

SELECT post.*,postr.* 
FROM `wp_posts` as post 
INNER JOIN wp_term_relationships postr on post.ID=postr.object_id 
WHERE postr.term_taxonomy_id IN(".$implode.") 
AND post_status='publish' 
AND post_type='product' 
GROUP BY ID,postr.term_taxonomy_id

这是因为“postr.term\u taxonomy\u id”是非聚合列,应该在group by中。

为什么不起作用?它给出了哪个错误?您需要进行一些调试才能了解这一点。例如,复制SQL查询并直接在phpmyadmin或其他SQL管理器中运行它。只要用实数替换$IMPODE,如果有错误,您将看到引发的错误。我在本地主机上运行这个查询,它工作正常,没有任何错误。您好,您的代码正在执行,但它没有完成我需要的任务。in语句中的三个数字中的每一个都应该过滤结果。例如,考虑一个国家搜索查询country、province、city,其中3个值中的每一个都在进一步过滤结果。现在,省是否改变并不重要,它将始终只显示第一个值country的结果,谢谢。是的,我只是为错误的语法编写了修复程序。但从逻辑上讲,你需要另一种方法。是的,在这里不合适。使用3个内部联接可以解决您的问题。选择post.*,postr.*从wp_posts作为post内部连接wp_term_relationships postr.ID=postr.object_ID内部连接wp_term_relationships postr2.ID=postr2.object_ID内部连接wp_term_relationships postr3.ID=postr.term_分类法ID=4和postr2.term_分类法ID=5和postr3.term_分类法ID=23和post\u status='publish'按ID分组,postr.term\u分类\u ID