【问题标题】:Cant use column label value in "MAX(CASE WHEN value ='first_name' THEN value END) as 'Förnamn'不能在“MAX(CASE WHEN value ='first_name' THEN value END)中使用列标签值作为'Förnamn'
【发布时间】:2023-03-19 05:04:01
【问题描述】:

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

有没有办法使用 value 代替 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

【问题讨论】:

  • MAX(CASE WHEN SLUG ='first_name' THEN value END) ??

标签: mysql sql pivot case aggregate-functions


【解决方案1】:

看起来你只是想要条件聚合,就像这样

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 使用反引号作为标识符(尽管一般来说,我建议使用不需要引用的标识符)。

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 2011-08-05
    • 2012-12-28
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多