使用 sql 从数据库中的每个组中获取一个随机记录(行)
using sql to get one random record(row) from each group in database
我想从每组中随机抽取一张借书证,组在“状态”栏
select library card, state
from [stategov]..library
where states in (
'Ohio',
'Arizon'
)
group by state, librarycard
我应该使用前 1 名吗?或 CTE?
因为每个州可以拥有超过 10,000 张借书证。使用分组依据从每个州随机获得一张借书证的最佳方法是什么?
您可以尝试使用 ROW_NUMBER()
进行以下操作。要获得随机,您需要按 newid()
订购
;WITH cte
AS (
SELECT *,ROW_NUMBER() OVER (PARTITION BY STATE ORDER BY (SELECT newid())) rn
FROM [stategov]..library WITH (NOLOCK)
WHERE states IN (
'Ohio'
,'Arizon'
)
)
SELECT *
FROM cte
WHERE rn = 1
我想从每组中随机抽取一张借书证,组在“状态”栏
select library card, state
from [stategov]..library
where states in (
'Ohio',
'Arizon'
)
group by state, librarycard
我应该使用前 1 名吗?或 CTE?
因为每个州可以拥有超过 10,000 张借书证。使用分组依据从每个州随机获得一张借书证的最佳方法是什么?
您可以尝试使用 ROW_NUMBER()
进行以下操作。要获得随机,您需要按 newid()
;WITH cte
AS (
SELECT *,ROW_NUMBER() OVER (PARTITION BY STATE ORDER BY (SELECT newid())) rn
FROM [stategov]..library WITH (NOLOCK)
WHERE states IN (
'Ohio'
,'Arizon'
)
)
SELECT *
FROM cte
WHERE rn = 1