如何從一組X記錄中檢索N個隨機記錄。例如,如果我們的網站上有一個包含2000個鏈接到不同頁面的表格,我們如何檢索10個隨機記錄?如何從存儲過程中檢索N個隨機記錄?
0
A
回答
1
嘗試使用動態SQL這樣的。請注意,這需要更多的工作,因爲某些邊緣案例不包括在內,例如返回0的COUNT()或記錄計數大於COUNT()等的案例。
CREATE PROCEDURE dbo.RandomNRecords
(
@recordCount int
)
as
begin
declare @counter int
declare @sqlQuery nvarchar(2000)
SET @sqlQuery = '
CREATE TABLE #TempTable
(
f1 varchar(50),
f2 varchar(50),
f3 int,
id int identity(1,1)
)
INSERT INTO #TempTable
SELECT f1, f2, f3 FROM Table1
SELECT *
FROM #TempTable
WHERE id in ('
SELECT @recordCount = COUNT(*) From Table1
SET @counter = 0
WHILE @counter < @recordCount
BEGIN
SET @counter = @counter + 1
SET @sqlQuery = @sqlQuery + CONVERT(varchar,Round((@recordCount * Rand()), 0)) + ','
END;
SET @sqlQuery = SUBSTRING(@sqlQuery, 1, LEN(sqlQuery) - 1) --remove last comma
SET @sqlQuery = @sqlQuery + ')'
EXEC sp_executesql @sqlQuery
END
2
SELECT TOP 10 *
FROM tableName
ORDER BY NEWID()
0
declare @numberOfRecordsToGet int = 5
select top (@numberOfRecordsToGet) * from name_of_your_tbl order by newid()
0
使用這種在存儲過程
申報@N VARCHAR(10)
組@ N = '10'
EXEC( 'SELECT TOP' + @ N + '* FROM tableName ORDER BY NEWID()')
相關問題
- 1. 檢索N到N記錄
- 2. 如何從Google App Engine數據存儲檢索單個記錄?
- 3. 如何從表中檢索每個第N條記錄?
- 4. 選擇N個隨機記錄
- 5. mySQL記錄隨機不存儲到dbase
- 6. 從DocDB的每個類別中選擇隨機N條記錄
- 7. 如何通過SQL檢索機器IP地址存儲過程
- 8. 從數據庫中檢索隨機記錄
- 9. 從Google App Engine數據存儲中獲取隨機記錄?
- 10. 如何從qt中的存儲過程中檢索qtableview?
- 11. TSQL:存儲過程檢索多個記錄和參考表中的數據
- 12. 正在檢索第n個記錄
- 13. 從Sql存儲過程檢索數據
- 14. 如何從存儲過程中有效地檢索數千行
- 15. 如何使用spring NamedParameterJdbcTemplate從存儲過程中檢索數據?
- 16. 如何從存儲過程中檢索標量值(ADO.NET)
- 17. 檢索值在存儲過程中,並用它存儲過程
- 18. 查詢從MS訪問檢索隨機記錄
- 19. ms訪問ADO - 無法檢索從存儲過程返回的記錄集
- 20. 如何從緩存中檢索整個對象而不跳過一些記錄
- 21. 隨機行裏面挑存儲過程
- 22. 存儲過程刪除比N天更早的記錄
- 23. 從多個表中檢索數據的存儲過程?
- 24. 從存儲過程中檢索兩個值
- 25. 隨機記錄從MongoDB的
- 26. 如何從TableAdapter檢索存儲過程返回值
- 27. 如何從另一個存儲過程調用存儲過程?
- 28. 如何讓數據存儲區查詢的第n個記錄
- 29. 如何從NSSet實例中檢索一個隨機對象?
- 30. 每個羣組選擇N個隨機記錄
[按性能隨機排序](http://stackoverflow.com/questions/6680310/random-order-by-performance) – 2013-02-26 09:35:24