gpt4 book ai didi

php - WordPress中SQL查询中的对角无序

转载 作者:行者123 更新时间:2023-11-29 07:17:48 26 4
gpt4 key购买 nike

我在 WordPress 中执行 SQL 查询时遇到问题,我想将每个帖子 ID 放在带有 meta_key 列的一行中,但我得到了几个不均匀的记录。

SELECT P.ID,
IF(PM.meta_key = 'nombrem', PM.meta_value, NULL) AS nombrem,
IF(PM.meta_key = 'generom', PM.meta_value, NULL) AS generom,
IF(PM.meta_key = 'tiempom', PM.meta_value, NULL) AS tiempom,
IF(PM.meta_key = 'urlm', PM.meta_value, NULL) AS urlm,
IF(PM.meta_key = 'imagenm', PM.meta_value, NULL) AS imagenm
FROM K1nG_posts AS P
LEFT JOIN K1nG_postmeta AS PM ON ( P.ID = PM.post_id )
WHERE P.post_type = 'post'
AND (P.post_status = 'publish' OR P.post_status = 'private') ORDER BY P.post_date DESC

通过放置上面的代码,我在 phpmyadmin 中得到以下内容,我希望单个帖子 ID 将每个 meta_value 值都放在非对角线水平列中,如图所示。

enter image description here

最佳答案

您似乎在寻找条件聚合。为此,您需要添加一个 GROUP BY 子句并用聚合函数包围您的条件表达式:

SELECT P.ID,
MAX(CASE WHEN PM.meta_key = 'nombrem' THEN PM.meta_value END) AS nombrem,
MAX(CASE WHEN PM.meta_key = 'generom' THEN PM.meta_value END) AS generom,
MAX(CASE WHEN PM.meta_key = 'tiempom' THEN PM.meta_value END) AS tiempom,
MAX(CASE WHEN PM.meta_key = 'urlm' THEN PM.meta_value END) AS urlm,
MAX(CASE WHEN PM.meta_key = 'imagenm' THEN PM.meta_value END) AS imagenm
FROM
K1nG_posts AS P
LEFT JOIN K1nG_postmeta AS PM ON P.ID = PM.post_id
WHERE
P.post_type = 'post'
AND (P.post_status = 'publish' OR P.post_status = 'private')
GROUP BY P.ID, P.post_date
ORDER BY P.post_date DESC

关于php - WordPress中SQL查询中的对角无序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com