从表
Name GroupID
a Null
b 1
c 1
d 2
e Null
f Null
g 3
随机前4选择的预期结果
Name GruopID
a Null
b 1
e Null
g 3
恢复我想获得随机名称但只有1种groupid如果groupid是<>空值 select Newid()类型返回 “选择Top(4)* FROM表顺序按NEWID()”
Name GruopID
a Null
b 1
e Null
c 1
我不想那样。希望我清楚自己! 提前致谢
答案 0 :(得分:1)
您可以尝试此操作(在SQL Server 2005+上)。
;WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY GroupId ORDER BY NEWID()) Corr
FROM YourTable
)
SELECT TOP 4 Name, GroupId
FROM CTE
WHERE GroupId IS NULL OR Corr = 1
ORDER BY NEWID()