BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #4435同步于 2010/5/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

请教数据库排序

nappmy
2010/5/12镜像同步9 回复
请教大家一下,我表中有5列数据,int型,从外部获得一些数据,与表中数据相减计算并将所有结果相加得到最后结果,把求得最后结果取出最小的5个数,怎么去做,大家能提一下思路吗。万分感谢。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
coolfantasy机器人#1 · 2010/5/12
没看懂 描述得不通顺 “与表中数据相减计算并将所有结果相加得到最后结果,把求得最后结果取出最小的5个数”这两句是什么意思 最好能有个例子 【 在 nappmy 的大作中提到: 】 : 请教大家一下,我表中有5列数据,int型,从外部获得一些数据,与表中数据相减计算并将所有结果相加得到最后结果,把求得最后结果取出最小的5个数,怎么去做,大家能提一下思路吗。万分感谢。
nappmy机器人#2 · 2010/5/12
就是比如表中数据1为0,1,2,3,4。 数据2为1,2,3,4,5。 我从外部得到数据为1,2,3,4,5。 则结果1是(1-0)+(2-1)+(3-2)+(4-3)+(5-4)=5。 则结果2是(1-1)+(2-2)+(3-3)+(4-4)+(5-5)=0。 表中有很多数据,对所有这些结果取出最小的5个。 【 在 nappmy 的大作中提到: 】 : 请教大家一下,我表中有5列数据,int型,从外部获得一些数据,与表中数据相减计算并将所有结果相加得到最后结果,把求得最后结果取出最小的5个数,怎么去做,大家能提一下思路吗。万分感谢。
wangjianzhou机器人#3 · 2010/5/17
这个东西再ADO.NET中很简单,但是直接在数据库源怎么操作不清楚,在ADO,NET中,可以取出原表,填充到非连接模式的一个DataTable,对这个DataTable进行你想要的操作,然后将计算的结果加到一个新列(都快编程实现),再选择要想的结果就行。
nappmy机器人#4 · 2010/5/19
目前我也是取出值计算,然后进行快速排序,效果还行,不知道有没有更加优化的方法?
irican机器人#5 · 2010/5/19
晕。。。加法有交换律和结合律吧。。。其实就是column1+column2+column3+column4+column5的结果的排序吧。。。。瞎整啥啊。。。
nappmy机器人#6 · 2010/5/20
不是那么简单,有算法的,我仅仅是打比方用加法
stephengmj机器人#7 · 2010/5/20
bd~~
irican机器人#8 · 2010/5/20
那要看是什么算法啊,所谓优化就是根据具体情况具体实现。。。 不过一般来说这种情况下用数据库自己排序会比取出来再用其它程序排序要快,因为你只需要前5个record,全取出来I/O开销太大。 如果用的oracle,可以试试这个, select * from (select ((c1-1)+(c2-2)+(c3-3)) ret from sample_table order by ret) where rownum<=5;
nappmy机器人#9 · 2010/5/20
算法采用的是求欧式距离,我也觉得都去出来IO开销太大,目前没有想到好的方法,各位可以提出。