返回信息流一个数据库表格式如下:
id name value
1 haha 233
1 haha 345
1 haha 444
2 heihei 444
2 heihei 344
2 heihei 235
3 hehe 123
3 hehe 221
.....
现在我只想查找每个id的第一条记录(包含所有id),同样id的其他记录不需要,
就是说我要的结果是这样:
1 haha 233
2 heihei 444
3 hehe 123
...
那么该怎么写sql语句呢?跪求大牛指导。。。。
这是一条镜像帖。来源:北邮人论坛 / database / #7509同步于 2013/5/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
[问题]求大牛知道怎么写sql语句
ninghua309
2013/5/30镜像同步20 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 weksomnus 的大作中提到: 】
: 为什么那些数据的id都一样?
我也不晓得为什么不是唯一的,但确实这个表已经就是这样的,所以惆怅有什么办法只取到每个id的第一条记录。。。
【 在 q397273499 的大作中提到: 】
: 这样的id不合理啊
确实不合理,但是这个表已经就是这样了,而且数据量很大,不知道要怎么搞了。。。
尝试转进新的表里面吧
【 在 ninghua309 的大作中提到: 】
:
: 确实不合理,但是这个表已经就是这样了,而且数据量很大,不知道要怎么搞了。。。
【 在 doug 的大作中提到: 】
: 第一条。。。 ?? 可以每个只随机出一条。。。 只出第一条 还真不敢保证诶。。
随机出一条的方法是用group by吗
【 在 ninghua309 的大作中提到: 】
: 一个数据库表格式如下:
: id name value
: 1 haha 233
: ...................
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER(PARTITION BY ID, NAME ORDER BY VALUE DESC) RN
FROM TABLE_NAME) T
WHERE T.RN = 1
学习了,这个做法比我想的简单
【 在 HOMERKIT 的大作中提到: 】
: SELECT *
: FROM (SELECT *,
: ROW_NUMBER() OVER(PARTITION BY ID, NAME ORDER BY VALUE DESC) RN
: ...................