2014-10-04 60 views
0

我有一列[Star]Integer),可以有1或2或3随机记录SQL Server的条款

值我有很多记录的表。

我如何选择我的表100分的记录,首先选择它[Star]列3个值 然后选择[Star] 2值和最终选择[Star] 1倍的值?

+0

谢谢大家,但是我的总返回记录应该是100, – user3404171 2014-10-05 02:09:38

回答

0

,2,然后1,但只有前100用途:

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

如果不是,请添加一些澄清/样本数据并输出到您的问题。

0
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 
0
SELECT TOP 100 * FROM <TABLE> WHERE [Star] = 3 
UNION ALL 
SELECT TOP 100 * FROM <TABLE> WHERE [Star] = 2 
UNION ALL 
SELECT TOP 100 * FROM <TABLE> WHERE [Star] = 1 
2

订购NEWID()会产生随机结果。

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个随机记录您可以根据需要调整TOP(n)的,如果你想第一个3