我有一些表基本上如下:
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)
但我得到一个错误,上面写着"不是单组小组的功能"
还有其他方法我应该这样做吗?
好吧,你错过了小组的功能;-)
试试这个:
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组合的所有行的子句.
你也可以这样做:
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)