第二张表:BDuserId ,ReceiveNums 表名:B
已知一个BDuserID为:123
现在要同时查两张表,想得到一个结果:查询B表排除BDuserID为123的一个随机的BDUserID,但是这个BDuserID必须为A表中当天24小时内总记录数小于3。应该怎么写?
如:select Top 1 BDuserID from B where BDuserID not in (123) and ReceiveNums为最小 and 这个BDuserID必须是A表中2014-3-17总记录数小于3 的一个结果
3 个解决方案
#1
看上去你的A表ID是自增的,然后我理解A,B两表用的就是ID和BDuserId 关联,如果这样的话,“这个BDuserID必须为A表中当天24小时内总记录数小于3。”这个貌似实现不了
#2
如果要随机,可以用newid() 函数来实现的
#3
select
top 1 b.*
from
(select id from a where SendUser in(select SendUser from a group by SendUser having count(1)<=3)) as a
inner join b on a.id=b.BDuserId
order by
newid()
#1
看上去你的A表ID是自增的,然后我理解A,B两表用的就是ID和BDuserId 关联,如果这样的话,“这个BDuserID必须为A表中当天24小时内总记录数小于3。”这个貌似实现不了
#2
如果要随机,可以用newid() 函数来实现的
#3
select
top 1 b.*
from
(select id from a where SendUser in(select SendUser from a group by SendUser having count(1)<=3)) as a
inner join b on a.id=b.BDuserId
order by
newid()