我试图在对表(注释)进行分组之前对其进行排序,因此我创建了一个名为comm_sorted的临时表,并按时间戳对其进行了排序。

但是,它仍然不起作用。

    $sql = "
select images.id,images.image as imageURL, images.fid as userID, user.name as userFullName, images.comment as feedDescription, images.sharedServices, stores.name as customerName,
CONCAT('[',
GROUP_CONCAT(
DISTINCT CONCAT('\"',likes.uid,'\"')),']') as likes ,
CONCAT('[',
GROUP_CONCAT(
DISTINCT CONCAT('{\"userId\":\"',comm_sorted.uid,'\",\"comment\":\"',comm_sorted.comment,'\",\"timeStamp\":\"',comm_sorted.timestamp,'\"}') separator ','),']')  as comments FROM images
LEFT JOIN stores on images.client_id=stores.id
LEFT JOIN likes on images.id=likes.feedid
LEFT JOIN (select * from comments order by timestamp DESC) as comm_sorted on images.id=comm_sorted.feedid
LEFT JOIN user on images.fid=user.id WHERE images.fid=:userID group by images.id, user.name, images.image, images.comment, images.sharedServices, stores.name order by images.Timestamp
DESC LIMIT $offset, $limit";

最佳答案

感谢Barmar先生-您可以在GROUP_CONCAT()函数中放置一个ORDER BY comm_sorted.timestamp选项。无需临时查询。问题结束。

关于mysql - 在SQL中的组之前排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12625836/

10-14 14:56