我正在开发wordpress,我需要为客户端生成及时的csv文件,这必须包含有关wp_posts的帖子的基本信息,如title,time&作者。除此之外,我使用自定义字段来存储post_count,作者姓名,author_email以及更多的元字段。
wp_postmeta的结构 id,meta_key,meta_value
wp_posts的结构 id,title,date
wp_posts& wp_postmeta有1:N关系。
如果我用语句
做一个简单的内连接SELECT * FROM wp_posts INNER JOIN wp_postmeta where wp_postmeta.post_id = wp_posts.id
然后我为每个元值得到一行,但我想要的是每个元值成为一个列,每个帖子只有一行。
如何撰写此查询?
请假设这是一个标准的wordpress数据库。
答案 0 :(得分:1)
如果您正在运行MySQL,请使用GROUP_CONCAT
:
SELECT wp_posts.*, GROUP_CONCAT(meta_value SEPARATOR ', ')
FROM wp_posts INNER JOIN wp_postmeta USING post_id
GROUP BY wp_posts.post_id;
答案 1 :(得分:0)
旧问题,但在我的搜索中弹出。我将GROUP_CONCAT用于键/值对,如下所示:
GROUP_CONCAT(pm.meta_key, '=', pm.meta_value ORDER BY pm.meta_key DESC SEPARATOR ',') as meta