Sql 随机选择防止某些重复

Sql 随机选择防止某些重复,sql,sql-server,sql-server-2005,sql-server-2008,Sql,Sql Server,Sql Server 2005,Sql Server 2008,从桌子上 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 恢复我想得到随机名称,但如果groupid为null,则只需要1种groupid select Newid()类型返回 “从表Order By NEWID()中选择顶部(4)*” 我不想那样。希望我

从桌子上

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
恢复我想得到随机名称,但如果groupid为null,则只需要1种groupid select Newid()类型返回 “从表Order By NEWID()中选择顶部(4)*”

我不想那样。希望我把自己说清楚! 提前感谢

您可以尝试(在SQL Server 2005+上)


我想您正在寻找ClauseCoull显示您现有的查询您现在使用的查询是什么?@Brad-DISTINCT子句将删除具有空值的行。。。
Name GruopID
a  Null
b   1
e  Null
c   1
;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()