来自mysql DB的SELECT和double CONCAT

时间:2014-08-16 07:50:08

标签: php mysql

我刚刚解决了这个问题,但它肯定不是最好的解决方案。

这是包含每个项目的自定义文件的DB表,如下所示:

id_item     Name    Value
1           name1   val1
1           name2   val2
1           name3   val3
2           name4   val4
3           name5   val5
3           name6   val6

我不能在没有CONCAT的情况下选择所有这些,因为表太大而且我一次只能选择不超过500行

因此,我提出了这个问题:

SELECT
    id_item, GROUP_CONCAT(CONCAT_WS(':::::', name, value) SEPARATOR ';;;;;') custom
FROM
    custom_field_value
WHERE
    GROUP BY id
ORDER BY
    id

所以在php中每个项目都有一个数组:

Array
(
    [0] => Array
        (
            [id_item] => 12345
            [custom] => name1:::::value1;;;;;name2:::::value2
        )

    [1] => Array
        (
            [id_item] => 12346
            [custom] => name3:::::value4;;;;;name5:::::value6
        )

)

然后我必须将它爆炸两次以获得最终结果。有没有更好的方法来解决这个问题?

可能存在一些解决方案,从DB获取一个包含最后一行的数组?像这样:

Array
(
    [0] => Array
        (
            [id_item] => 12345
            [name1] => value1
            [name2] => value2
        )

    [1] => Array
        (
            [id_item] => 12346
            [name3] => value3
            [name4] => value4
            [name5] => value5
        )

)

是吗?

0 个答案:

没有答案