Mysql按子查询返回的列表查询

时间:2016-01-14 20:19:35

标签: mysql wordpress mamp

对于Wordpress项目,我想使用子查询将多个查询合并为一个。我正在使用MySQL 5.5.42。第一种情况是查询表wp_categories中的post_id列表,然后使用结果列表在表wp_postmeta的{​​{1}}列中查询匹配的ID。

到目前为止我所拥有的是

SELECT post_id 
FROM wp_postmeta 
WHERE meta_value IN ( 
    SELECT member_ids 
    FROM wp_categories 
    WHERE id=140 ) 
AND meta_key='bizid'

这似乎是空手而归,但是当我用有效值替换子查询时,我得到了有效的结果。

编辑: 这个答案让解决方案(https://stackoverflow.com/a/22375303/1817379)留给我查询:

SELECT post_id, meta_key
FROM wp_postmeta, wp_categories
WHERE wp_categories.id = 140 
    AND FIND_IN_SET(wp_postmeta.meta_value, wp_categories.member_ids)
    AND wp_postmeta.meta_key ='bizid'

另外,感谢@ sa289的线索:事实证明子查询返回的是字符串而不是列表,这是IN子句无法处理的。

1 个答案:

答案 0 :(得分:1)

尝试自己运行子查询并查看返回的内容。

子查询可能没有返回任何结果,或者返回的结果不具有“bizid”的meta_key。在wp_postmeta表中,查询子查询返回的member_ids。

编辑:

或者,如果wp_categories表中的member_ids列对于任何给定行都有多个member_id,那么它将无法工作。如果是这种情况,请更改它,以便每行有一个member_id。