如何解决算在“ SQL Server中”
我有一个问题:
select UsersInfo.fName 'نام',UsersInfo.lName 'نام خانوادگی'
from UsersInfo
where UsersInfo.MemberID in (
select COUNT(ToLend.UserID),ToLend.UserID 'تعداد کتاب های قرض گرفته'
from ToLend
inner join UsersInfo on ToLend.UserID = UsersInfo.MemberID
group by UserID
having count(UserID) > 2
)
错误是:
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。
在此代码中,如何“计数”用户ID?
解决方法
您希望内部选择返回一个用户ID。为什么要添加count()然后呢?
select UsersInfo.fName 'نام',UsersInfo.lName 'نام خانوادگی'
from UsersInfo
where UsersInfo.MemberID in (
select ToLend.UserID 'تعداد کتاب های قرض گرفته'
from ToLend
inner join UsersInfo on ToLend.UserID = UsersInfo.MemberID
group by UserID
having count(UserID) > 2
)
MemberId是UsersInfo中的唯一键吗? 如果是这样,您可以将查询更改为:
select UsersInfo.fName 'نام',UsersInfo.lName 'نام خانوادگی'
from UsersInfo
where (select count()
from ToLend
where ToLend.UserID = UsersInfo.MemberID
) > 2
更新:在输出中获取count():
select UsersInfo.fName 'نام',UsersInfo.lName 'نام خانوادگی',count()
from UsersInfo
inner join ToLend
where ToLend.UserID = UsersInfo.MemberID
group by UsersInfo.MemberID,UsersInfo.fName,UsersInfo.lName
having count() > 2
我必须将UsersInfo.MemberID
添加到组中,因为不确定fName
+ lName
的组合是否唯一。如果是这样,您可以在分组依据中忽略UsersInfo.MemberID
。
您只需按如下所示修改代码
SELECT UsersInfo.fName 'نام',a.UserId 'تعداد کتاب های قرض گرفته',a.[cnt]
FROM UsersInfo u
JOIN (
SELECT COUNT(ToLend.UserID) [cnt],ToLend.UserID
FROM ToLend
INNER JOIN UsersInfo ON ToLend.UserID = UsersInfo.MemberID
GROUP BY UserID
HAVING count(UserID) > 2
) a ON a.UserID = u.MemberId
,
如果要知道哪个用户被借出> 2,则可以在子查询中删除COUNT(ToLend.UserID)。而且,如果您想知道借了多少次,可以在select中添加子查询
select UsersInfo.fName 'نام',(select COUNT(UserID)
from ToLend
where UserID = UsersInfo.MemberID
group by UserID
having count(UserID) > 2) 'Lended count'
from UsersInfo
where UsersInfo.MemberID in (
select ToLend.UserID 'تعداد کتاب های قرض گرفته'
from ToLend
inner join UsersInfo on ToLend.UserID = UsersInfo.MemberID
group by UserID
having count(UserID) > 2
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。