从sql结果集中随机选择行?

时间:2013-05-05 09:39:13

标签: sql sql-server-2008

我有一个查询,将产生10或20或任意数量的行。以下是查询。

select bookname from bookstore where recommend='true' and Year(pubdate)='2013'

此查询可以为我提供任意数量的行。

但我必须从结果中只显示4行。我可以选择前4名,但我想随机选择,这样每次访问时用户都不会显示相同的书名。

请帮助我如何从结果中获取随机行。

2 个答案:

答案 0 :(得分:2)

SELECT TOP 4 bookname 
FROM   bookstore 
WHERE  recommend = 'true' AND
       Year(pubdate)='2013'
ORDER  BY NEWID()

答案 1 :(得分:-2)

select 
   bookname 
from 
   bookstore 
where 
   recommend='true' and 
   Year(pubdate)='2013' 
order by 
   rand() 
limit 4

编辑:对于sql-server使用newid()而不是rand()