gpt4 book ai didi

MySQL 在 LEFT JOIN WHERE 中计数

转载 作者:行者123 更新时间:2023-11-29 07:55:40 24 4
gpt4 key购买 nike

我不是专家,请在回答我的问题时记住这一点......我在 stackoverflow 上阅读了许多其他示例,但我根本不明白如何在我的任务中使用它。

我有一个相册数据库表和一个照片数据库表:

表专辑:

album_id   album_creatoruser_id
-------------------------------
1 777
2 777
3 777

表格照片:

photo_id   photo_album_id
-------------------------
1 1
2 1
3 1
4 1
5 2
6 2
7 3
8 3
9 3

现在我想获取用户创建的所有照片的总和,在我的示例中 album_creatoruser_id=777

我确信可以直接在 MySQL 中使用一个查询或子查询,或者使用 LEFT JOIN 或 GROUP BY,但我无法让它工作,因为我不明白构建此查询的逻辑.

任何关于如何计算特定 album_creatoruser_id 创建的所有 album_idphoto_id 行的帮助都会很好!

简而言之:album_creatoruser_id 777 获得了多少张照片?

最佳答案

您的基本查询是:

   SELECT COUNT(*)
FROM table_album ta
JOIN table_photo tp
ON tp.photo_album_id = ta.album_id
WHERE album_creatoruser_id = **input**

我建议运行以下查询以了解其工作原理:

   SELECT *
FROM table_album ta
JOIN table_photo tp
ON tp.photo_album_id = ta.album_id

将在 tp.photo_album_id = ta.album_id 条件下返回 table_album 中的所有行及其各自的 table_photo 记录。

   SELECT *
FROM table_album ta
JOIN table_photo tp
ON tp.photo_album_id = ta.album_id
WHERE album_creatoruser_id = **input**

将这些行过滤为仅包含 album_creatoruser_id = **input** 的行。

   SELECT COUNT(*)
FROM table_album ta
JOIN table_photo tp
ON tp.photo_album_id = ta.album_id
WHERE album_creatoruser_id = **input**

对这些行进行计数,返回一个聚合行(COUNT() 是一个聚合函数,如 SUM()MAX())结果,您不需要 GROUP BY 因为只有一个组;所有过滤的行。

如果您想要所有 album_creatoruser_id 及其各自的计数,我建议:

   SELECT album_creatoruser_id, COUNT(*)
FROM table_album ta
JOIN table_photo tp
ON tp.photo_album_id = ta.album_id
GROUP BY album_creatoruser_id

关于MySQL 在 LEFT JOIN WHERE 中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com