日期:2014-05-17  浏览次数:20658 次

求一SQL 语句 小弟菜鸟 高手帮帮忙!!!
假如一张表中有N条数据,从其中随机取出20条数据,而且取出的时候必须是单个取出,Sql语句该怎么写,求高手帮忙,小弟不胜感激!!!
------最佳解决方案--------------------
select distinct top 20 * from table1 order by newid();

------其他解决方案--------------------
SELECT DISTINCT TOP 20 NEWID(), * FROM Clothes c (NOLOCK)
ORDER BY NEWID();

------其他解决方案--------------------

select top 20 *
from tb
order by newid()
这样取就不会有重复的

------其他解决方案--------------------

select distinct top 20 *
from tb
order by newid()

------其他解决方案--------------------
单个取出?
------其他解决方案--------------------
单个取出是什么意思呢?
------其他解决方案--------------------
还要不重复是吧
------其他解决方案--------------------
那就是随机生成20条记录吧
------其他解决方案--------------------
随机20次union all起来?
------其他解决方案--------------------
引用:
随机20次union all起来?

+1
楼主为什么要单一抽取呢?
------其他解决方案--------------------
用while循环
循环20次
------其他解决方案--------------------
是的  单个取出,总共20条  必须是随机的
------其他解决方案--------------------
好像不行啊,如果指定了 select distinct,那么 order by 子句中的项就必须出现在选择列表中。
引用:
假如一张表中有N条数据,从其中随机取出20条数据,而且取出的时候必须是单个取出,Sql语句该怎么写,求高手帮忙,小弟不胜感激!!!

------其他解决方案--------------------
引用:
SQL code

select distinct top 20 *
from tb
order by newid()


好像不行啊,如果指定了 select distinct,那么 order by 子句中的项就必须出现在选择列表中
------其他解决方案--------------------
引用:
单个取出是什么意思呢?

就是二十条数据必须一条一条的取出,如果随机同时取出的话我自己会:select top 20 * from 表名 order by newid()  就OK了 问题是非同时取出 而是单个取出 
------其他解决方案--------------------
引用:
那就是随机生成20条记录吧


是的  ,但是必须保证单个取出 总共20条记录
------其他解决方案--------------------
引用:
SQL code
select distinct top 20 * from table1 order by newid();


这条语句我也会 ,这能随机取出20条数据 但是不能保证单个取出 
------其他解决方案--------------------
引用:
SQL code
SELECT DISTINCT TOP 20 NEWID(), * FROM Clothes c (NOLOCK)