说我有下表:
MyTable的
id | val | val2
---------------
1 | 'a' | 1.2
1 | 'b' | 2.3
1 | 'c' | 3.4
2 | 'b' | 4.5
2 | 'c' | 5.6
2 | 'b' | 6.7
2 | 'a' | 7.8
2 | 'd' | 8.9
我想要一个随机的查询,为每个唯一id
返回一行。但结果不应该"分开" val
和val2
之间的配对。所以
id | val | val2
---------------
1 | 'a' | 1.2
2 | 'b' | 4.5
是有效的结果,但
id | val | val2
---------------
1 | 'a' | 1.2
2 | 'b' | 5.6
不是。
提前感谢您的帮助。
答案 0 :(得分:2)
您可以使用ROW_NUMBER
和NEWID()
进行随机排序:
SELECT
id, val1, val2
FROM (
SELECT *,
Rn = ROW_NUMBER() OVER(PARTITION BY id ORDER BY NEWID())
FROM tbl
)t
WHERE Rn = 1