我想知道是否有一种方法可以只选择列中的某些值以用于 GROUP_CONCAT 而不从 SELECT 中排除不匹配的列。
这是具体的场景:对于我的 WordPress 网站,我的表wp_22_posts
和wp_22_postmeta
表在帖子和元数据之间具有一对多的关系。我想对加入的结果进行分组,并为每个组wp_22_posts.ID
选择一个以分号分隔的列表。如果键匹配“authorid”或“isbn”,我只想获取元键和值;但是,我不想排除没有“authorid”或“isbn”的行- 对于不匹配的行,我宁愿只返回或类似的东西。wp_22_postmeta.meta_key
wp_22_postmeta.meta_value
null
下面是我目前正在使用的查询,但正如您所见,它正在提取所有元数据:
SELECT posts.post_title, MAX(posts.post_date_gmt), posts.post_content, posts.guid AS url, posts.comment_count,
GROUP_CONCAT(postmeta.meta_key ORDER BY postmeta.meta_value DESC SEPARATOR ';') AS meta_key,
GROUP_CONCAT(postmeta.meta_value ORDER BY postmeta.meta_value DESC SEPARATOR ';') AS meta_value
FROM wp_22_posts AS posts
JOIN wp_22_postmeta AS postmeta ON (posts.ID = postmeta.post_id)
WHERE posts.post_status = 'publish'
GROUP BY posts.ID