首页 > 解决方案 > 不能将“MAX(CASE WHEN value ='first_name' THEN value END)中的列标签值用作'Förnamn'

问题描述

我希望使用的表中的列名是“值”,但是在 MySql 中它变成了一个 MySql 命令。列名“slug”工作得很好。我无法控制列名,所以我无法将其更改为源表。

有没有办法使用价值而不是 og slug?

MAX(CASE WHEN **value** ='first_name' THEN value END) as 'Förnamn',

ID---+---EntryID---+--- slug---+---value---
1           1         first_name    Luke
2           1         lastname      Skywalker
3           1         profession    Jedi

SELECT entry_id,
MAX(CASE WHEN slug ='first_name' THEN slug END) as 'Förnamn',
MAX(CASE WHEN slug ='last_name' THEN slug END) as 'hej',
MAX(CASE WHEN slug ='email_address' THEN slug END) as 'E-post'
FROM wpgl_cf_form_entry_values
GROUP BY entry_id

标签: mysqlsqlpivotcaseaggregate-functions

解决方案


好像你只想要条件聚合,就像这样

SELECT entry_id,
    MAX(CASE WHEN slug ='first_name'    THEN value END) as `Förnamn`,
    MAX(CASE WHEN slug ='last_name'     THEN value END) as `hej`,
    MAX(CASE WHEN slug ='email_address' THEN value END) as `E-post`
FROM wpgl_cf_form_entry_values
GROUP BY entry_id

注意:不要使用单引号作为标识符:这些应该只为文字字符串保留。MySQL 使用反引号作为标识符(尽管一般来说,我建议使用不需要引用的标识符)。


推荐阅读