不是单组组功能

Tri*_*Man 9 sql oracle

我有一些表基本上如下:

TBL_USER
user_id - number
user_name - varchar

TBL_STUFF
stuff_id - number
stuff_user_id - number
Run Code Online (Sandbox Code Playgroud)

我想查询所有用户信息,包括他们拥有的"东西"的数量.我正在尝试这样的事情:

select user_id, user_name, count(stuff_id) 
  from tbl_user
  left outer join tbl_stuff on stuff_user_id = user_id
 where user_id = 5;
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误,上面写着"不是单组小组的功能"

还有其他方法我应该这样做吗?

Dan*_*rth 8

好吧,你错过了小组的功能;-)

试试这个:

select user_id, user_name, count(stuff_id) 
from tbl_user left outer join tbl_stuff on stuff_user_id = user_id
where user_id = 5
group by user_id, user_name;
Run Code Online (Sandbox Code Playgroud)

最后一行是group by告诉Oracle计算具有相同user_id和user_name组合的所有行的子句.

  • 我尝试添加“按 user_id 分组”,但收到消息“不是按表达式分组”。我真的需要添加所有字段吗?在我的实际查询中,我还选择了很多其他字段。 (2认同)

Ari*_*ion 7

你也可以这样做:

select 
  user_id, 
  user_name, 
  (
    SELECT
        COUNT(*)
    FROM
        tbl_stuff
    WHERE 
        stuff_user_id = tbl_user.user_id

  ) AS StuffCount, 
from 
   tbl_user
where 
   user_id = 5;
Run Code Online (Sandbox Code Playgroud)