ID Content
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
现在需要随机选出三组数据(B C D),B组一条数据,C组三条数据,D组二条数据,要求每个组中数据不能重复,把三个组数据合并后也不能有重复数据。
注意:这里只是举例子,实际上组数和每组数据量都不是固定的,业务上是先选择第一组,再选择第二组,以此类推。
第一组很好选,我现在的难点是 选择后面的组时怎么保证选出的数据前面的组中没有。
请高手指点怎么解决这个问题?
9 个解决方案
#1
select top 1 * from tb
select top 3 * from tb where id not in (刚刚抽走的ID)
以此类推
select top 3 * from tb where id not in (刚刚抽走的ID)
以此类推
#2
选出的数据没有存入数据库
#3
每天回帖即可获得10分可用分!
#4
临时保存下 已经抽走的ID
下次在获取时 not in(若干ID)
下次在获取时 not in(若干ID)
#5
这样行
#6
有点难度
#7
我的理解也就是分页取数据而已。。这个只是分页数据取出总和。。
#8
解决了,结贴去了
就用4楼的思路
就用4楼的思路
#9
create table ta
(
get_id int identity(1,1) ,
t_id int,
Content nvarchar(40)
)
create table tb
(
tb_ID int,
Content nvarchar(40)
)
insert into tb
select 1 ,'a'
union select 2,'b'
union select 3,'c'
union select 4,'d'
union select 5,'e'
union select 6,'f'
union select 7,'h'
union select 8,'i'
union select 9,'j'
insert into ta(t_id,Content)
select top 1 * from tb order by newid()
select t_id ,Content from ta --获取第一条数据
insert into ta(t_id,Content)
select top 2 * from tb where tb_ID not in (select t_id from ta) order by newid()
select t_id ,Content from ta where get_id between 2 and 3 -- 获取第二条
insert into ta(t_id,Content)
select top 4 * from tb where tb_ID not in (select t_id from ta) order by newid()
select t_id ,Content from ta where get_id between 4 and 8 -- 获取第三条
drop table tb
drop table ta
希望对你有帮组,刚做的
#1
select top 1 * from tb
select top 3 * from tb where id not in (刚刚抽走的ID)
以此类推
select top 3 * from tb where id not in (刚刚抽走的ID)
以此类推
#2
选出的数据没有存入数据库
#3
每天回帖即可获得10分可用分!
#4
临时保存下 已经抽走的ID
下次在获取时 not in(若干ID)
下次在获取时 not in(若干ID)
#5
这样行
#6
有点难度
#7
我的理解也就是分页取数据而已。。这个只是分页数据取出总和。。
#8
解决了,结贴去了
就用4楼的思路
就用4楼的思路
#9
create table ta
(
get_id int identity(1,1) ,
t_id int,
Content nvarchar(40)
)
create table tb
(
tb_ID int,
Content nvarchar(40)
)
insert into tb
select 1 ,'a'
union select 2,'b'
union select 3,'c'
union select 4,'d'
union select 5,'e'
union select 6,'f'
union select 7,'h'
union select 8,'i'
union select 9,'j'
insert into ta(t_id,Content)
select top 1 * from tb order by newid()
select t_id ,Content from ta --获取第一条数据
insert into ta(t_id,Content)
select top 2 * from tb where tb_ID not in (select t_id from ta) order by newid()
select t_id ,Content from ta where get_id between 2 and 3 -- 获取第二条
insert into ta(t_id,Content)
select top 4 * from tb where tb_ID not in (select t_id from ta) order by newid()
select t_id ,Content from ta where get_id between 4 and 8 -- 获取第三条
drop table tb
drop table ta
希望对你有帮组,刚做的