我创建了下表,此表有500个原始数据。
CREATE TABLE Education_question
(
EducationId int IDENTITY(101,1),
EductionText Varchar(MAX)
);
在这种情况下我们实现了分页。在500个原始数据中,我们在单个商店程序调用中仅获取10个原始数据。第二次我调用相同的Store程序,它会给下一个10 raw。最重要的是我必须从剩余的原始中随机取出10个原始数据。 我解雇了下面的查询然后我得到了10行,但是在该数据中重复了一些原始数据(获得原始数据)。我如何得到10个不同的原料。
SELECT TOP(10) * FROM Education_question
ORDER BY NEWID()
答案 0 :(得分:1)
试试这个:
SELECT DISTINCT TOP(10) * FROM chirag_Education_question ORDER BY NEWID()
答案 1 :(得分:0)
以下是获取所需结果的脚本:
DECLARE @idx int
DECLARE @TotalRows int
DECLARE @NewNumber int
DECLARE @RowNumbers TABLE(RowNum int)
SELECT @TotalRows = COUNT(*) FROM Education_question
SET @idx = 0
WHILE(@idx < 10)
BEGIN
SELECT @NewNumber = RAND() * 10000
WHILE(@NewNumber > @TotalRows)
BEGIN
SET @NewNumber = @NewNumber/10
END
IF NOT EXISTS (SELECT * FROM @RowNumbers WHERE RowNum = @NewNumber)
BEGIN
INSERT INTO @RowNumbers(RowNum) VALUES(@NewNumber)
SET @idx = @idx + 1
END
END
SELECT EducationId, EductionText FROM (SELECT ROW_NUMBER() OVER(ORDER BY EducationId) AS
RowId, * FROM Education_question) OrderedRecords
WHERE RowId IN (SELECT RowNum FROM @RowNumbers)