对于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子句无法处理的。
答案 0 :(得分:1)
尝试自己运行子查询并查看返回的内容。
子查询可能没有返回任何结果,或者返回的结果不具有“bizid”的meta_key。在wp_postmeta表中,查询子查询返回的member_ids。
编辑:
或者,如果wp_categories表中的member_ids列对于任何给定行都有多个member_id,那么它将无法工作。如果是这种情况,请更改它,以便每行有一个member_id。