gpt4 book ai didi

mysql - INNER JOIN 之后的 SQL PIVOT

转载 作者:行者123 更新时间:2023-11-29 04:42:40 25 4
gpt4 key购买 nike

我正在尝试从我的 wordpress 数据库中的数据创建事件页面。数据保存在 2 个表中($wp_posts 和 $wp_postmeta)。在 INNER JOIN 之后,我需要 PIVOT 表 $wp_postmeta 但经过多次尝试后我不知道该怎么做。

我的查询是:

SELECT
PO.ID,
PO.post_title,
PO.post_content,
PM.post_id,
PM.meta_key,
PM.meta_value

FROM $wp_posts PO
INNER JOIN $wp_postmeta PM ON PO.ID = PM.post_id

我需要让表 $wp_postmeta 中的“meta_key”成为列名,然后才能选择 meta_values

Database

感谢您对我的查询的帮助。

最佳答案

MySQL 没有运行数据透视表的能力..但是你可以伪造一个数据透视表。

注意:

您需要知道要旋转的行数。

查询:

SELECT
MAX(CASE meta_key WHEN '_EventOrganizerID' THEN meta_value END )AS _EventOrganizerID,
MAX(CASE meta_key WHEN '_EventURL' THEN meta_value END )AS _EventURL,
MAX(CASE meta_key WHEN '_EventCost' THEN meta_value END )AS _EventCost,
MAX(CASE meta_key WHEN '_EventCurrencyPosition' THEN meta_value END )AS _EventCurrencyPosition,
MAX(CASE meta_key WHEN '_EventCurrencySymbol' THEN meta_value END)AS _EventCurrencySymbol,
MAX(CASE meta_key WHEN '_EventVenueID' THEN meta_value END )AS _EventVenueID,
MAX(CASE meta_key WHEN '_EventDuration' THEN meta_value END )AS _EventDuration,
MAX(CASE meta_key WHEN '_EventEndDate' THEN meta_value END )AS _EventEndDate,
MAX(CASE meta_key WHEN '_EventStartDate' THEN meta_value END )AS _EventStartDate,
MAX(CASE meta_key WHEN '_EventAllDay' THEN meta_value END )AS _EventAllDay
FROM
( SELECT
PO.ID,
PO.post_title,
PO.post_content,
PM.post_id,
PM.meta_key,
PM.meta_value
FROM $wp_posts PO
INNER JOIN $wp_postmeta PM ON PO.ID = PM.post_id
) t
GROUP BY post_id

另一个注意事项:

如果您想从此查询中选择 meta_values.. 因为它不仅可以转换结果,而且实际上可以选择特定的东西,您可以像我做的那样从这个查询中选择转换它。

关于mysql - INNER JOIN 之后的 SQL PIVOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209741/

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