"Unknown column" 尝试将 EAV table 转换为常规视图时出错

"Unknown column" error when trying to convert EAV table to regular view

我的 MySQL "data" EAV table 具有这样的遗传结构:

rowId  |  key |  value
  1       name    John
  1       lname   Lennon
  2       name    Paul
 ....

我喜欢做一个 select 来显示 table 中的数据,就好像 keys 是列名一样:

rowId  | name |  lname
  1      John     Lennon
  2      Paul
  ....

按照 this one 等链接,我创建了这个查询:

SELECT st.rowId, st.key, st.value,
  (CASE WHEN data.key = "name" THEN data.value END) AS `name`, 
  (CASE WHEN data.key = "lname" THEN data.value END) AS `lname`
FROM data st 
GROUP BY st.rowId;

但是我得到以下错误:

Unknown column 'data.key' in 'field list'

我尝试按照建议更改 " 标志 here 但还没有成功。

一些错误 1) 您将数据别名为 st,因此您应该为所有列引用 st(您不能混合和匹配)2) select 中的列毫无意义 3 ) 你需要一个最大函数

SELECT st.rowId ,#, st.key, st.value,
  max(CASE WHEN st.key = "name" THEN st.value END) AS `name`, 
  max(CASE WHEN st.key =  'lname' THEN st.value END) AS `lname`
FROM  data st
GROUP BY st.rowId;

+-------+------+--------+
| rowId | name | lname  |
+-------+------+--------+
|     1 | John | Lennon |
|     2 | Paul | NULL   |
+-------+------+--------+
2 rows in set (0.00 sec)