数据库用的 postgres 14
现在有 3 张表, app, appuser, x ,其中 appuser 为 app 和 user 的映射关系,一个 app 会有多个 user
其中 app 的示例
id | name | x_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
appuser 示例
id | app_id | user_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
x 的示例
id | name |
---|---|
1 | xxx |
2 | yyy |
现在业务需求是做一个 app 的页面,其中一个表格,每行显示对应的 app.id, app.name, userCount, x.id, x.name
其中 x.id 和 x.name 把 app 表和 x 表 join 起来查询就可以。。。但是请教高手,可以怎样一行 sql 把该 app 对应的用户数也 count 出来?
1
liprais 2023-02-26 21:09:50 +08:00
理解一下 join 到底干了啥:
把多行满足条件的数据拼接到一行里面 现在你有这一行数据了,group by 不就完了 |
2
pendulum 2023-02-26 21:29:47 +08:00
SELECT "a"."id", "a"."name", COUNT("b"."user_id") AS "userCount", "x"."id", "x"."name" FROM "app" AS "a"
INNER JOIN "x" ON "a"."x_id" = "x"."id" INNER JOIN "appuser" AS "b" ON "a"."id" = "b"."app_id" GROUP BY "b"."app_id" |
3
dreamramon OP |
4
mywind 2023-02-26 22:56:06 +08:00
|
5
awen233333 2023-02-26 23:12:46 +08:00
@dreamramon select 里没有使用聚合函数的列都要放在 group by 语句后面
|