选择列作为其他列

时间:2012-07-12 17:57:00

标签: mysql

我有以下名为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行'

有谁知道这样做的方法?

2 个答案:

答案 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。