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()