尝试
SELECT CONCAT('{\'period\':\'', day, '\',', GROUP_CONCAT(itemprice ORDER BY itemprice), '}') row
FROM (SELECT day, CONCAT('\'', item, '\':\'', SUM(price), '\'') itemprice
FROM table1
GROUP BY day, item) n
GROUP BY day
输出:
| ROW |
----------------------------------------------------
| {'period':'2013-05-01','Apple':'4','Banana':'3'} |
| {'period':'2013-05-02','Apple':'2','Banana':'6'} |
SQLFiddle
更新:每天获取所有物品
SELECT CONCAT('{\'period\':\'', day, '\',', GROUP_CONCAT(itemprice ORDER BY itemprice), '}') row
FROM (
SELECT day, CONCAT('\'', item, '\':\'', SUM(price), '\'') itemprice
FROM (
SELECT a.day, a.item, IFNULL(t.price, 0) price
FROM (SELECT day, item FROM
(
(SELECT DISTINCT item FROM table1) i CROSS JOIN
(SELECT DISTINCT day FROm table1) d
)) a LEFT JOIN
table1 t ON a.day = t.day AND a.item = t.item
) m
GROUP BY day, item) n
GROUP BY day
输出:
| ROW |
----------------------------------------------------
| {'period':'2013-05-01','Apple':'4','Banana':'3'} |
| {'period':'2013-05-02','Apple':'2','Banana':'6'} |
| {'period':'2013-05-03','Apple':'2','Banana':'0'} |
SQLFiddle