Sql server 用于随机记录的SQL Server子句

Sql server 用于随机记录的SQL Server子句,sql-server,Sql Server,我有一个表,其列[Star]整数的值可以是1、2或3 我有很多记录 如何从表中选择第一个选择其[Star]列为3值的100条记录 然后选择带有2个值的[Star],最后选择带有1个值的[Star]。按NEWID排序将产生随机结果 select top 100 * from your_table where star = 1 union all select top 100 * from your_table where star = 2 union all select top 100 *

我有一个表,其列[Star]整数的值可以是1、2或3

我有很多记录

如何从表中选择第一个选择其[Star]列为3值的100条记录
然后选择带有2个值的[Star],最后选择带有1个值的[Star]。

按NEWID排序将产生随机结果

select top 100 * from your_table where star = 1
union all 
select top 100 * from your_table where star = 2
union all 
select top 100 * from your_table where star = 3
SELECT *
FROM (
            SELECT TOP (100) * FROM TABLE_NAME
            WHERE [Star] = 3
            ORDER BY NEWID()
      ) r3
UNION ALL
SELECT *
FROM (
            SELECT TOP (100) * FROM TABLE_NAME
            WHERE [Star] = 2
            ORDER BY NEWID()
      ) r2
UNION ALL
SELECT *
FROM (
            SELECT TOP (100) * FROM TABLE_NAME
            WHERE [Star] = 1
            ORDER BY NEWID()
      ) r3

如果只需要总共100条随机记录,您可以调整前n条,如果您需要前3条、2条、1条,但只有前100条使用:

 Select Top (100) * 
 from your_table 
 where [Star] in (1,2,3)
 Order by [Star] desc

如果没有,请添加一些澄清/示例数据并输出到您的问题。

谢谢大家,但我返回的记录总数应该是100,
 Select Top (100) * 
 from your_table 
 where [Star] in (1,2,3)
 Order by [Star] desc