随机选择防止一些重复
问题描述:
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是<>空 选择Newid()类型返回 “Select Top(4)* FROM Table Order by NEWID()”
Name GruopID
a Null
b 1
e Null
c 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()
+0
完美!谢谢 – Mac 2011-02-23 17:48:15
我认为你正在寻找的[DISTINCT](http://msdn.microsoft.com/en-us/library/aa259187%28v=sql.80%29.aspx)子句 – 2011-02-23 15:38:27
你能显示您现有的查询 – msarchet 2011-02-23 15:38:46
您现在使用的查询是什么? – Blorgbeard 2011-02-23 15:38:55