首页 新闻 会员 周边

sql 查询问题

0
悬赏园豆:50 [已解决问题] 解决于 2014-01-14 22:08

我有一个message 表,有2个字段 toUserId, createTime.其中toUserId 没有唯一约束.

我想取出按createTime 排序后前100个toUserId

select distinct top 100  m.userId from message m order by m.createTime,会报"如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。"的错误,各位大神有什么好的方案吗?

IORY的主页 IORY | 初学一级 | 园豆:14
提问于:2014-01-14 20:47
< >
分享
最佳答案
0

看错了

收获园豆:50
菜鸟前进中 | 菜鸟二级 |园豆:276 | 2014-01-14 21:11

@菜鸟前进中: 这我也想过,但是会报 "除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。"的错误

IORY | 园豆:14 (初学一级) | 2014-01-14 21:24

@IORY: 我刚才试了,才发现视图不能用order by。那你可以先把查询的内容放到临时表中再查就行了。

菜鸟前进中 | 园豆:276 (菜鸟二级) | 2014-01-14 21:38
其他回答(1)
0

 自己解决了. select top 100 * from (select m.userId,max(m.createTime)t from message m group by m.userId) ct order by ct.t desc

IORY | 园豆:14 (初学一级) | 2014-01-14 21:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册