【发布时间】:2020-11-23 21:32:07
【问题描述】:
您好,我是 postgresql 的新手,并且已经被以下问题困扰了一段时间。下面我有两个表: 表格1: 头像
login | name | gender | race
----------+-------------+--------+------------
agnetha | Flutter Shy | F | faerie
agnetha | Flit | F | faerie
agnetha | Whisp | F | faerie
astral | Lightning | F | raccoon
astral | Elphaba | F | wizard
bobby | Steve | M | wizard
bobby | Wayne | M | footballer
bobby | Smiley | M | shark
....
表 2:玩家
login | name | gender | address | joined
----------+---------+--------+-----------------+---------------------
agnetha | Sarah | F | 191 Howth Ave | 2016-08-01 17:50:44
astral | Jessie | F | 81 Franklin St | 2016-05-28 21:21:21
bobby | Robert | M | 7 Avenue Rd | 2016-07-19 12:00:59
cait | Caitlin | F | 444 Sycamore Dr | 2016-08-05 23:51:17
carter | Lucy | F | 213 John Ave | 2016-07-08 19:28:46
cash | Thomas | M | 213 John Ave | 2016-07-04 15:37:59
....
我的任务是使用这两个表并找出哪些登录在头像表中改变了他们的性别,并显示个人拥有的“头像”的总和。示例 agnetha 有 3 个化身,astral 有 2 个,bobby 有 3 个。
我的问题是,当我尝试使用子查询进行计数时,postgresql 会说 用作表达式的子查询返回不止一行
到目前为止,这是我写的查询
SELECT player.login,player.name,player.gender,
(SELECT count(avatar.login) FROM avatar group by login order by login)as avatars
FROM player INNER JOIN avatar ON player.login = avatar.login AND avatar.gender <> player.gender
GROUP BY avatar.login, player.login ORDER by login;
知道如何获取每次登录时所有头像的数量并将它们显示在如下所示的表格上:
login | name | gender | avatars
---------+---------+--------+---------
carter | Lucy | F | 3
coder | Jeff | M | 3
dazzle | Alice | F | 3
【问题讨论】:
标签: sql postgresql join subquery