首页 > 解决方案 > MySQL在多个子查询中查找总数

问题描述

我们有一个应用程序可以帮助人们找到其他人打篮球。我们与该市的一些篮球场相关联。所以我的任务是找出“在 XXField (field_id = 460) 打球的球员全年打篮球的次数”

我不确定我是否非常了解该做什么。这些是我正在处理的表

Game_users 表

game_id | user_id | bill_id | created_at          | deleted_at
23455   | 3455    | 234     | 2019-02-06 03:16:40 | null
45678   | 6790    | 877     | 2020-02-09 07:26:34 | null
87666   | 2546    | 899     | 2020-04-20 06:06:06 | null
12312   | 1231    | 989     | 2019-02-22 09:22:31 | null

游戏桌(包括篮球场的 id)

id   | field_id | game_status| created_at          | deleted_at
23455| 460      | Completed  | 2019-02-06 03:16:40 | null
23455| 345      | Completed  | 2020-09-03 05:45:33 | null
87666| 460      | Completed  | 2020-12-12 08:34:22 | null
87666| 212      | Completed  | 2020-11-23 09:54:12 | null

我知道我必须加入两个表才能获得字段 ID 和在那里玩的玩家。但是我怎么也能得到他们今年打高尔夫球的总次数呢?包括他们在460玩的那些。

对不起,这令人困惑,这对我来说也很困惑。

我的预期结果是这样的

User_Id | Total Games | FieldXX Number of Games
1234    | 34          |  12

标签: mysqlsql

解决方案


您可以使用子查询 inIN子句,GROUP BY如下所示:

SELECT GU.USER_ID,
       COUNT(1)
  FROM GAME_USERS AS GU
WHERE GU.GAME_ID IN (SELECT ID FROM GAMES AS G WHERE G.FIELD_ID = 460)
AND .. CONDITION ON created_at FOR WHOLE YEAR ACCORDING TO YOUR REQUIREMENT
GROUP BY GU.USER_ID

推荐阅读