1

对于样本表:

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

我不想通过唯一的 courseId 随机 discId 进行选择。所以我的结果是

ID courseId dishId
1  1        1
3  2        4

如果我比其他随机再次运行:

ID courseId dishId
2  1        5
5  2        8

ETC...

我正在使用微软 sql 2008

例如

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

这会给我返回正确的结果,但 discId 始终相同,但我希望 discId 是随机菜

或者我可以先通过 courseId = 1 从一个表中选择,然后通过 courseId 2 再次选择(两个结果都按 newId() 排序)并进行 UNION,但是当我有 7 门课程时,我不想有 7 SELeCT sentances 。 .. 我希望没有 UNION 也能得到同样的结果

4

1 回答 1

3
select ID, courseId, dishID from (
select row_number() over (partition by courseId order by newid()) as n, *
from Table 
) t
where n = 1
于 2013-04-09T11:44:43.090 回答