从随机选择SQLSERVER中选择前8行

时间:2013-12-20 10:57:26

标签: sql sql-server

我不知道如何从以下查询中选择前8行。我是SQL新手。

SELECT TOP 100 PERCENT * FROM (
select TEXT, ID, Details 
from tblTEXT 
where (ID = 12 or ID = 13 or ID =15) 

) X
order by newid()

此查询为我提供了31个随机行,但我想选择前8行。

我正在使用以下功能

select top 8 
from 
(
SELECT TOP 100 PERCENT * FROM (
    select TEXT, ID, Details 
    from tblTEXT 
    where (ID = 12 or ID = 13 or ID =15) 

    ) X
    order by newid()
)

4 个答案:

答案 0 :(得分:4)

唯一的错误是:

SELECT TOP 8 * FROM (
select TEXT, ID, Details 
from tblTEXT 
where (ID = 12 or ID = 13 or ID =15) 

) X
order by newid()

(其他答案目前不正确,因为它们没有为外部子查询指定名称,但最外层查询中只有ORDER BY会影响结果顺序,所以当它们有其他问题时可靠性)

答案 1 :(得分:1)

试试这个

select top 8 * from 
(
SELECT TOP 100 PERCENT * FROM (
    select TEXT, ID, Details 
    from tblTEXT 
    where (ID = 12 or ID = 13 or ID =15) 

    ) X
    order by newid()
)Y

当然,您要从前100行中选择前8位,您也可以直接从内部查询中选择前8位,将top 100替换为top 8,如下所示

SELECT TOP 8 * FROM (
select TEXT, ID, Details 
from tblTEXT 
where (ID = 12 or ID = 13 or ID =15) 

) X
order by newid()

答案 2 :(得分:0)

试试这个

SELECT TOP 8 * FROM
(     
      SELECT TEXT, ID, Details 
      FROM tblTEXT 
      WHERE (ID = 12 or ID = 13 or ID =15)
)X  ORDER BY newid()

答案 3 :(得分:-1)

您需要指定要从结果中返回的内容: *意味着你想要看到每一件事。

select top (8) *
from 
(
SELECT TOP 100 PERCENT * FROM (
    select TEXT, ID, Details 
    from tblTEXT 
    where (ID = 12 or ID = 13 or ID =15) 

    ) X
    order by newid()
)