我使用多个SQL查询来完成一个表,但我认为也可以只使用一个查询就得到它。结构如下:
有表'WP_PostMeta';包括id、post_id、meta_key和meta_value作为列。在该表中,meta_key=x的行在meta_value部分中有用户ID值。我想用给定的meta_key和用户id值(在meta_value部分)获得post_id值,并用该post_id获得给定meta_key的某些meta_values。这里有一个例子。假设用户ID为9:
选择CONCAT(从“wp_postmeta”中选择“meta_value”,其中“meta_key”=y且“post_id”=(从“wp_postmeta”中选择“post_id”,其中“meta_key”=x且“meta_value”=9));(从“wp_postmeta”中选择“meta_value”,其中“meta_key”=z且“post_id”=(从“wp_postmeta”中选择“post_id”,其中“meta_key”=x且“meta_value”=9));(从“
通过该查询,我连接了给定元键的元值,这些元键属于与给定用户ID相关的post。(y,z,w)。问题是,对于给定的用户ID,我可以正确地得到我想要的东西,但是我想给出一个用户ID的列表,并得到它们相应的串联结果。我怎样才能做到呢?谢谢你的帮助。
您似乎在描述这样的内容(使用MySQL语法):
select p.*, group_concat(pm.metavalue) as metavalues
from wp_posts p left join
wp_postmeta pm
on pm.post_id = p.post_id
where p.user_id in ( . . . )
group by p.user_id;