非常简单的表作为示例,但不知道如何实现这一点:
示例:表1
$total_expressions
两个随机记录:我知道我可以这样做
ColumnA ColumnB
1 A
1 B
2 C
但是现在我想选择两个随机记录,但不能是A组同时具有'1'的组合,这意味着结果不能接受'1 A'和'1 B',其余的是细
有什么想法吗?提前致谢
答案 0 :(得分:2)
DROP TABLE #T
CREATE TABLE #T(ID INT
,Vals CHAR(2)
)
INSERT INTO #T VALUES
(1,'A')
,(1,'B')
,(2,'A')
,(2,'C')
,(3,'D')
,(4,'E')
,(5,'E')
SELECT TOP 2
ID,
Vals
FROM
(
SELECT
ID
,VALS
,ROW_NUMBER() OVER(PARTITION BY ID ORDER BY NEWID()) Rnk
FROM
#T) T
WHERE
Rnk = 1
order by NewID()
答案 1 :(得分:1)
这是一种方法,但如果你的桌子非常大,它可能会变得昂贵:
;With Random As
(
Select *,
Row_Number() Over (Partition By ColumnA Order By NewId()) As RN
From Table1
)
Select Top 2 ColumnA, ColumnB
From Random
Where RN = 1
Order By NewId()