最喜欢的照片

siotufzp  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(394)

我想在我的数据库里找到最喜欢的照片。有照片,喜欢,用户表。我试图找到最喜欢的照片和用户谁发布的照片,只有喜欢和用户,得到了一个错误。

SELECT 
    users.username,
    photo_id,
    COUNT(*) AS most_liked
FROM
    likes
    INNER JOIN users ON users.id=likes.user_id
GROUP BY
    photo_id
ORDER BY
    most_liked DESC
LIMIT
    1;

错误1055(42000):select列表的表达式#1不在group by子句中,并且包含未聚合的列“igŠu clone.users.username”,该列在功能上不依赖于group by子句中的列;这与sql\u mode=only\u full\u group by不兼容
我可以只用两张table吗?还是应该用第三张table呢?

laximzn5

laximzn51#

您需要使用子查询来查找最喜欢的照片(仅使用 likes 表)与实际照片信息分开(从 photos )表-然后连接到 users . 我想你的 photos 表有一个 user_id 列。

SELECT
    users.username,
    photos.photo_id,
    photo_likes.like_count

FROM
    photos
    INNER JOIN
    (
        SELECT
            photo_id,
            COUNT(*) AS like_count
        FROM
            likes
        GROUP BY
            photo_id
    ) AS photo_likes
    INNER JOIN users ON users.id = photos.user_id

ORDER BY
    like_count DESC

LIMIT
    1

相关问题