"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)
我的 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)