我正在运行此SQL查询
$sql = "select images.image, images.comment as feedDescription,
customers.fullName, CONCAT('[', GROUP_CONCAT(DISTINCT likes.uid),']') as likes,
CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('{\"userid\":\"', comments.fid, '\", \"comment\":\"', comments.comment, '\"}') separator ','),']') as comments
FROM images
LEFT JOIN customers on images.client_id = customers.client_id
LEFT JOIN likes on images.image = likes.image
LEFT JOIN comments on images.image = comments.image
WHERE images.fid=:userID
ORDER BY images.image LIMIT $offset,$limit";
唯一的问题是我只获得了第一行......
我有图像表,客户表(根据我在图像中获取的ID获取客户的名称),喜欢表(在图像上做“喜欢”的人)和评论(撰写“评论”的人)表)
答案 0 :(得分:1)
您正在对查询使用聚合函数,因此MySQL只会自动返回一行 - 所有数据的聚合。
在其他数据库中,这会产生错误,因为您混合了聚合和非聚合列。这是MySQL的一个(错误)功能,称为“隐藏列”。
在您的查询中添加一个分组以解决问题:
group by images.image, images.comment, customers.fullName
请务必在WHERE子句之后和ORDER BY之前添加它。