我有以下名为attributes
的表:
| identifier | attribute | value |
|------------|-----------|------------|
| 23 | myKey | myValue |
| 24 | hisKey | hisValue |
| 25 | herKey | herValue |
| 23 | otherKey | otherValue |
我想创建SQL select查询,选择上面的行,按标识符对它们进行分组,并使用attribute
作为键,value
作为键的值。
这意味着一个如上所示的表应该变成以下PHP数组:
Array
(
[0] => Array
(
[identifier] => 23
[myKey] => myValue
[otherKey] => otherValue
)
[1] => Array
(
[identifier] => 24
[hisKey] => hisValue
)
[2] => Array
(
[identifier] => 25
[herKey] => herValue
)
)
我尝试过以下SQL查询:
SELECT attributes.value as atttributes.attribute FROM attributes GROUP BY identifier
这将产生以下错误:
带有消息'SQLSTATE [42000]的未捕获异常'PDOException': 语法错误或访问冲突:1064 SQL中有错误 句法;查看与MySQL服务器版本对应的手册 要在'.attribute FROM attributes GROUP BY附近使用正确的语法 标识符'在第1行'
有谁知道这样做的方法?
答案 0 :(得分:1)
您的错误来自拼写错误。不要在别名中指定表。
SELECT attributes.value as atttributes.attribute FROM attributes GROUP BY标识符
以下是更正:
SELECT attributes.value as attribute FROM attributes GROUP BY identifier
然而,它不会让你想要的。 MySQL将始终返回每行中具有相同列数的结果。
您需要在带循环的代码中实现此功能。使用ORDER BY代替GROUP BY,每当标识符发生更改时,启动另一个数组。
答案 1 :(得分:1)
答案是你不能以合理的方式使用SQL。