我刚刚解决了这个问题,但它肯定不是最好的解决方案。
这是包含每个项目的自定义文件的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
)
)
是吗?