简短版:
我需要自定义一个查询结果,使用一个值作为列名,另一个值作为该列的值。并且它需要是自动的(不是硬编码的,可能有数百个“元键”)。
详细版:
我正在使用WordPress的“用户元数据”结构,其中单个用户具有用户ID,另一个表包含与用户相关的“元数据”。
这些元数据是任意的,并且只有四列:
meta_id
,post_id
,meta_key
,meta_value
。
我想对某个用户执行SQL查询,并格式化结果,使所有元数据都格式化为行,其中meta_key
是列名,meta_value
是该列的值。
示例数据库:
-- wp_users
* ID | username | email
35 | radgh | radgh@example.org
-- wp_usermeta
* meta_id | user_id | meta_key | meta_value
1 | 35 | first-name | Radley
2 | 35 | last-name | Sustaire
3 | 35 | newsletter | on
我的查询(我需要找出(???)部分,它将生成元键/值对作为虚拟列)
SELECT
`users`.ID as 'user_id',
`users`.username as 'username',
`users`.email as 'email',
(???)
FROM `wp_users` `users`
INNER JOIN `wp_usermeta` `meta`
ON `users`.ID = `meta`.user_id
WHERE `wp_users`.ID = 35
期望结果:
* user_id | username | email | first-name | last-name | newsletter
35 | radgh | radgh@example.org | Radley | Sustaire | on
在这个类似的问题中,所选答案使用硬编码字段。我想自动执行此操作。 :)