计入 'in' SQL 服务器
Count in 'in' 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
)
错误是:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
在这段代码中,如何为 UserID 进行“计数”?
您可以简单地修改您的代码如下
SELECT UsersInfo.fName 'نام'
,UsersInfo.lName 'نام خانوادگی'
,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
您想要内部 select 到 return 一个用户标识。为什么要添加 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
。
如果你想知道哪个用户被借出> 2,你可以在子查询中删除COUNT(ToLend.UserID)。如果您想知道借出多少次,可以在 select
中添加子查询
select UsersInfo.fName 'نام',
UsersInfo.lName 'نام خانوادگی',
(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
)
我有以下问题:
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
)
错误是:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
在这段代码中,如何为 UserID 进行“计数”?
您可以简单地修改您的代码如下
SELECT UsersInfo.fName 'نام'
,UsersInfo.lName 'نام خانوادگی'
,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
您想要内部 select 到 return 一个用户标识。为什么要添加 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
。
如果你想知道哪个用户被借出> 2,你可以在子查询中删除COUNT(ToLend.UserID)。如果您想知道借出多少次,可以在 select
中添加子查询select UsersInfo.fName 'نام',
UsersInfo.lName 'نام خانوادگی',
(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
)