随机选择记录的问题
我的数据库表tablea是这样的,我想选择出来5条数据
id 名称 推荐 排序
1 zxz 1 1
2 cxx 0 2
3 dks 1 3
4 koi 1 4
5 uer 1 1
6 dkj 1 1
7 wek 1 1
8 sdk 1 1
第一个条件:我想先找出推荐的数据和排序不是1的先选择出来
select * from tablea where 推荐=1 and 排序 <> 1
这样选择出来了
id 名称 推荐 排序
3 dks 1 3
4 koi 1 4
这两条数据,
第二个条件:在剩下的数据库中 随机的 找出是推荐的并且排序是1的3条,凑够5条选择出来
当然第一个条件选择出来的只有1条,那么就从剩下的数据库中 随机的 找出是推荐的并且排序是1的4条,总之最后结果是凑够5条记录
总结的说就是:一定把推荐的并且排序不是1的记录选择出来,但是如果凑不够五条,比如还差两条,那么就从推荐的但排序是1的记录中随即取出两条,一共凑够5条选择出来,并且排序级越高的在越在最前面
不知道我意思表达清楚没有,寻求答案,先谢谢高手和浏览此帖的兄弟!
------解决方案-------------------- --try
set rowcount 5
select * from tablea where 推荐=1 and 排序 <> 1
union all
select * from tablea where 推荐=1 and 排序=1
set rowcount 0
------解决方案----------------------try
set rowcount 5
select * from tablea where 推荐=1 and 排序 <> 1 order by newid()
union all
select * from tablea where 推荐=1 and 排序=1 order by newid()
set rowcount 0
------解决方案-------------------- select top 5 * from T where 推荐=1
order by 排序 desc
------解决方案--------------------insert into @a select 1 , 'zxz ', 1 , 1 union all
select 2 , 'cxx ', 0 , 2 union all
select 3 , 'dks ', 1 , 3 union all
select 4 , 'koi ', 1 , 4 union all
select 5 , 'uer ', 1 , 1 union all
select 6 , 'dkj ', 1 , 1 union all
select 7 , 'wek ', 1 , 1 union all
select 8 , 'sdk ', 1 , 1
select top 5 * from @a order by (case when 推荐 <> 1 then 推荐 else 9 end),排序
result:
id 名称 推荐 排序
----------- ---------- ----------- -----------
2 cxx 0 2
6 dkj 1 1