【问题标题】:Select random ids based on other unique id根据其他唯一 id 选择随机 id
【发布时间】:2013-04-09 11:24:37
【问题描述】:

对于示例表:

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

等等……

我使用的是微软 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选择句子...我希望没有 UNION 也能得到相同的结果

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:
    select ID, courseId, dishID from (
    select row_number() over (partition by courseId order by newid()) as n, *
    from Table 
    ) t
    where n = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多