我有這個表:選擇獨特的領域
TableA
----------------
ID (pk) Name
1 A
2 B
3 C
4 A
5 D
6 A
7 B
8 A
9 D
10 C
....
我需要隨機與SELECT TOP 5 ID, Name FROM TableA
與名稱必須是5個記錄中是唯一的提取。
我想:
;WITH group
AS
(
SELECT ID, Name,
ROW_NUMBER() OVER (PARTITION BY Name ORDER BY NewId()) rn
FROM TableA
)
SELECT ID, Name
FROM group
WHERE rn = 1
但每次我有完全一樣的結果。
我需要隨機選擇ID的所有值,確保每個記錄的名稱始終不同。
我希望問題是可以理解的。有任何想法嗎?
找到了解決辦法。它似乎工作!
;WITH group
AS (
SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY NewId()) rn FROM TableA)
SELECT top 5 ID, Name, NewId() [NewId]
FROM group
WHERE rn = 1
ORDER BY [newid]
您的查詢工作的SQL Server 2012上剛剛renaming'group'爲'[組]'。每次運行不同的結果 – Horaciux
對於SQL Server 2014,它不起作用。 – MoS
請避免張貼您的解決方案作爲問題的一部分。相反,回答你自己的問題並接受你自己的答案。這樣,人們就會知道問題已經解決。 –