group by order by 问题

qq_34470481 2016-05-06 03:51:37


想要得到表中DISTINCT StationName最新版本的信息


select * from SoftwareList where id in (select min(ID) from SoftwareList group by StationName ) and ProductionPhase ='SMT' and Platform='MTK' order by Version desc

运行得到的结果并不正确



应该怎么修改呢??
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34470481 2016-05-06
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:
不要百度 rn =1 , 改为 ROW_NUMBER
懂了,结贴给分。。
卖水果的net 版主 2016-05-06
  • 打赏
  • 举报
回复
不要百度 rn =1 , 改为 ROW_NUMBER
qq_34470481 2016-05-06
  • 打赏
  • 举报
回复
版主,还想问一下其中的 RN=1 是什么意思呢??百度了一下好像没找到是什么意思
qq_34470481 2016-05-06
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
这样效果?
SELECT * FROM (SELECT * ,ROW_NUMBER()OVER(PARTITION BY StationName ORDER BY [Version] DESC) AS RN,MIN(ID)OVER(PARTITION BY StationName) AS MinID FROM SoftwareList ) AS a WHERE RN=1 ORDER BY a.MinID
可以了,这样就是不知道效率上会不会很低
中国风 2016-05-06
  • 打赏
  • 举报
回复
这样效果?
SELECT * FROM (SELECT * ,ROW_NUMBER()OVER(PARTITION BY StationName ORDER BY [Version] DESC) AS RN,MIN(ID)OVER(PARTITION BY StationName) AS MinID FROM SoftwareList ) AS a WHERE RN=1 ORDER BY a.MinID
qq_34470481 2016-05-06
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
SELECT * FROM (SELECT * ,ROW_NUMBER()OVER(PARTITION BY StationName ORDER BY [Version] DESC) AS RN FROM SoftwareList ) AS a WHERE RN=1


基本差不多了,但还有一个问题就是查询出来的结果StationName顺序有不是原始表的顺序
SELECT Platform,ProductionPhase,StationName,SoftwareName,Version,Size FROM (SELECT Platform,ProductionPhase,StationName,SoftwareName,Version,Size ,ROW_NUMBER()OVER(PARTITION BY StationName ORDER BY [Version] DESC) AS RN FROM SoftwareList ) AS a WHERE RN=1 and ProductionPhase ='SMT' and Platform='MTK'




怎么解决???
中国风 2016-05-06
  • 打赏
  • 举报
回复
SELECT * FROM (SELECT * ,ROW_NUMBER()OVER(PARTITION BY StationName ORDER BY [Version] DESC) AS RN FROM SoftwareList ) AS a WHERE RN=1

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧