使用 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