根据其他唯一ID选择随机ID

时间:2013-04-09 11:24:38

标签: sql-server tsql

样本表:

ID courseId dishID
1  1        1
2  1        5
3  2        4
4  1        7
5  2        8

我不想选择独特的courseId随机dishId。所以我的结果将是

ID courseId dishId
1  1        1
3  2        4

如果我再跑一次比其他随机:

ID courseId dishId
2  1        5
5  2        8

等...

我正在使用microsoft sql 2008

例如

SELECT * FROM Table 
WHERE dishId IN
(SELECT MIN(dishId) 
FROM Table 
GROUP BY courseId

这给了我正确的结果但是dishId总是一样的,但是我想那道菜是随机的菜

或者我可以先通过courseId = 1从一个表中选择,然后再按courseId 2选择(两个结果按newId()排序)并制作UNION,但是当我有7个课程时,我不想要7个SELeCT的发送......我希望没有UNION我能得到相同的结果

1 个答案:

答案 0 :(得分:3)

select ID, courseId, dishID from (
select row_number() over (partition by courseId order by newid()) as n, *
from Table 
) t
where n = 1