[英]MySQL selecting only certain values from column without excluding rows
我想知道是否有一種方法可以只選擇列中的某些值以供GROUP_CONCAT使用,而不會從SELECT中排除不匹配的列。
這是特定的場景:對於我的WordPress網站,我有wp_22_posts
和wp_22_postmeta
表, wp_22_postmeta
表與帖子和元之間是一對多的關系。 我想通過wp_22_posts.ID
結果進行wp_22_posts.ID
,並為每個組選擇以分號分隔的wp_22_postmeta.meta_key
和wp_22_postmeta.meta_value
列表。 我只想獲取鍵匹配“ authorid”或“ isbn”的元鍵和值; 但是,我不想排除沒有“ authorid”或“ isbn”的行 -我只想為不匹配的行返回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
我相信您可以使用CASE
代替GROUP_CONCAT
的列名:
GROUP_CONCAT(CASE WHEN postmeta.meta_key='authorid' OR postmeta.meta_key='isbn'
THEN postmeta.meta_key END, .....
抱歉,我目前無法測試,但應該可以
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.