一张表一个条件,同时要查询两张表,怎么写sql语句?

时间:2022-03-29 14:53:37
第一张表:SendUser  ReceiveUser AddTime(datetime类型)  表名:A
一张表一个条件,同时要查询两张表,怎么写sql语句?


第二张表: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()