在mysql查询中创建的对象数组内部排序

时间:2012-09-28 07:33:01

标签: mysql arrays sorting

我正在尝试创建一个查询,该查询将从注释表中生成一个图像列表(来自图像表)和每个图像,一个对象数组(用户在图像上发布的注释)。 / p>

结果中的每一行都应该是这样的(用JSON编码):

{"image_id":"100","name":"dog","comments":[{"userId":"eyal","comment":"nice picture","timestamp":"xxxxxx"},{"userId":"dan","comment":"i like the picture","timestamp":"xxxxxx"}]}

问题是我想按时间戳(评论表中的一个字段)对评论进行排序,但因为我按照图像进行分组,所以我不能在分组之前进行排序。

基本上,我需要一种方法来对注释表进行排序,然后再将它连接到图像表。

这是我的查询无法正常工作(除此之外一切正常)

$sql = "select images.id,images.name, CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('{\"userId\":\"',comm_sorted.uid,'\",\"comment\":\"',comm_sorted.comment,'\",\"timeStamp\":\"',comm_sorted.timestamp,'\"}') separator ','),']')  as comments FROM images  LEFT JOIN (select * from comments order by timestamp DESC) as comm_sorted on images.id=comm_sorted.id group by images.id order by images.Timestamp DESC, comm_sorted.timestamp DESC LIMIT $offset, $limit";    

帮助将不胜感激

的Eyal。

1 个答案:

答案 0 :(得分:1)

您可以在ORDER BY comm_sorted.timestamp功能中添加GROUP_CONCAT()选项。