SQL查询以查找当前活动日期范围或上次通过的日期范围
给定日期D,是否有方法查找每个用户当前的活动订阅或最近过期的订阅 这是桌子的结构SQL查询以查找当前活动日期范围或上次通过的日期范围,sql,sql-server,date,Sql,Sql Server,Date,给定日期D,是否有方法查找每个用户当前的活动订阅或最近过期的订阅 这是桌子的结构 user_subscription( user_subscription_id PRIMARY KEY, user_id, subscription_start_date, subscription_end_date, user_subscription_count ) 样本数据: 1 1 01-jan-2011 31-jan-2011 1 2
user_subscription(
user_subscription_id PRIMARY KEY,
user_id,
subscription_start_date,
subscription_end_date,
user_subscription_count
)
样本数据:
1 1 01-jan-2011 31-jan-2011 1
2 1 01-mar-2011 01-apr-2011 2
3 1 03-jun-2011 05-dec-2011 3
4 2 05-jan-2011 11-jan-2011 1
5 2 01-jun-2011 01-nov-2011 2
结果示例:
D=2011年1月15日,用户1为第1行,用户2为第4行。
我正在努力找到一种在SQL中实现这一点的方法
目前,我为每个用户做一个单独的查询,但是为成千上万的用户做这个查询是很昂贵的
非常感谢您的任何帮助/想法
谢谢 您可以使用行号:
您可以使用行号:
您可以使用行号:
您可以使用行号:
在这里拉小提琴:
在这里拉小提琴:
在这里拉小提琴:
在这里拉小提琴:
假设每个用户的订阅根据用户订阅计数及时递增,并且只有一个东西被订阅,请尝试:
select *
from user_subscription s
where user_subscription_count =
(select max(x.user_subscription_count)
from user_subscription x
where x.user_id = s.user_id
and x.subscription_start_date < @D)
假设每个用户的订阅根据用户订阅计数及时递增,并且只有一个东西被订阅,请尝试:
select *
from user_subscription s
where user_subscription_count =
(select max(x.user_subscription_count)
from user_subscription x
where x.user_id = s.user_id
and x.subscription_start_date < @D)
假设每个用户的订阅根据用户订阅计数及时递增,并且只有一个东西被订阅,请尝试:
select *
from user_subscription s
where user_subscription_count =
(select max(x.user_subscription_count)
from user_subscription x
where x.user_id = s.user_id
and x.subscription_start_date < @D)
假设每个用户的订阅根据用户订阅计数及时递增,并且只有一个东西被订阅,请尝试:
select *
from user_subscription s
where user_subscription_count =
(select max(x.user_subscription_count)
from user_subscription x
where x.user_id = s.user_id
and x.subscription_start_date < @D)
您能显示当前的查询吗?是否有重叠/包含的句点?@chanom首先,我当前使用SQL查询获取用户的所有订阅,然后用Java按顺序处理。@RogerWolf Nope,我没有。你能显示你当前的查询吗?你有重叠/包含句点吗?@chanom首先,我当前使用SQL查询获取用户的所有订阅,然后用Java按顺序处理。@RogerWolf没有,我没有。你能显示你当前的查询吗?你有重叠/包含句点吗?@chanom首先,我当前使用SQL查询获取用户的所有订阅,然后用Java按顺序处理。@RogerWolf没有,我没有。你能显示你当前的查询吗?你有重叠/包含句点吗?@chanom首先,我当前使用SQL查询获取用户的所有订阅,然后用Java按顺序处理。@RogerWolf没有。