我正试图弄清楚如何在ORDER BY子句中的CASE语句中涉及NEWID()(因此我可以以随机顺序返回结果),如下所示:
ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE NEWID() END DESC
显然这不起作用,因为它抛出“操作数类型冲突:uniqueidentifier与int不兼容”
有没有办法构造这个ORDER BY来让它随机排序或由指定的列排序?
答案 0 :(得分:4)
你可以做到
ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE -1 END DESC, newid()
如果需要,请选择其他“魔术值”而不是-1