Chr*_*ore 7 sql-server random select sql-server-2008
假设一个表结构:
Create Table Question
{
ID int pk,
Category varchar
Stem varchar,
AnswerA varchar,
...
AnswerD varchar,
Correct char,
isMandatory bit
}
Run Code Online (Sandbox Code Playgroud)
对于给定的类别,大约有50个问题.可以有1-10个强制性问题.
我需要随机选择所有必修问题,然后提出足够的其他问题来提出20个问题.
好的,这个怎么样
select top 20 * from question
where category = @category
order by isMandatory desc, newid()
Run Code Online (Sandbox Code Playgroud)
请参阅newid后面的推理答案()数据库表中的随机记录(T-SQL)
;WITH T
AS (SELECT *,
ROW_NUMBER()
OVER (PARTITION BY Category
ORDER BY isMandatory DESC, CRYPT_GEN_RANDOM(4)) RN
FROM Question)
SELECT *
FROM T
WHERE RN < = 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |