簡體   English   中英

MySQL僅從列中選擇某些值,而不排除行

[英]MySQL selecting only certain values from column without excluding rows

我想知道是否有一種方法可以只選擇列中的某些值以供GROUP_CONCAT使用,而不會從SELECT中排除不匹配的列。

這是特定的場景:對於我的WordPress網站,我有wp_22_postswp_22_postmeta表, wp_22_postmeta表與帖子和元之間是一對多的關系。 我想通過wp_22_posts.ID結果進行wp_22_posts.ID ,並為每個組選擇以分號分隔的wp_22_postmeta.meta_keywp_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM