样本表:
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我能得到相同的结果
答案 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