读书人

这个sql语句如何写?从章节1随机选取30

发布时间: 2012-04-28 11:49:53 作者: rapoo

这个sql语句怎么写?从章节1随机选取30道题,从章节2随机选取20道题目
这个sql语句怎么写?
我要从章节1随机选取30道题,从章节2随机选取20道题目

SQL code
select top 30 * from car where zhanjie=1 ORDER BY NEWID() union select top 20 * from car where zhanjie=2 ORDER BY NEWID() 这样写有错误


[解决办法]
SQL code
SELECT * FROM (select top 30 * from car where zhanjie=1 ORDER BY NEWID()) AUNION ALLSELECT * FROM (select top 20 * from car where zhanjie=2 ORDER BY NEWID()) B
[解决办法]
SQL code
SELECT * FROM (select top 30 * from car where zhanjie=1 ORDER BY NEWID()) AUNION ALLSELECT * FROM (select top 20 * from car where zhanjie=2 ORDER BY NEWID()) B
[解决办法]
SQL code
select *from(select top 30 * from car where zhanjie=1 ORDER BY NEWID() ) tunion select * from(select top 20 * from car where zhanjie=2 ORDER BY NEWID() ) r
[解决办法]
SQL code
select * from (select top 30 * from car where zhanjie=1 ORDER BY NEWID()) t1 union select * from ( select top 20 * from car where zhanjie=2 ORDER BY NEWID() )t2
[解决办法]
用NEWID()效率太低,大数据量就死跷跷了
建议用TABLESTAMP
或者直接指定
SQL code
select *from carwhere id in (rand()*22,.....)
[解决办法]
SQL code
SELECT * FROM (select *,row_number() over(partition by zhangjie order by newid()) as rnfrom car) Awhere (zhangjie=2 or zhangjie=1) and rn<31
[解决办法]
SELECT top 30 timu
FROM car
WHERE zhangjie = 1
union
SELECT top 20 timu
FROME car
WHERE zhangjie = 2
不知可否。

读书人网 >SQL Server

热点推荐