日期:2014-05-19  浏览次数:20655 次

一个算法问题,看有什么更优算法。
一个表中:
name   count
如果count不为0,则正常表示,有多少条记录就显示多少条。
如果为0且name项没有重复,则正常显示,否则此条记录不显示
我的算法是,把表分成两个表
表1   为全部count为非0的,这些要正常显示
表2   为全部count等于0,然后利用表2来个循环,一条一条到表1根据name判断,是否已存在,如果不存在,则添加,否则不处理。
看看大家有什么好的算法没?
如果记录不多,这样倒没什么关系,如果有几万条,那循环次数就是几百亿次了。。。



------解决方案--------------------
这样效率真的不行
为何不用自身关联来查询?!
------解决方案--------------------
count为非0的不用说了
取表a中count为0但name不重复的处理方法,通过过滤数据来处理
select * from a where name not in(select name from a group by name having count(name) > 1) and count =0
这种至少比你循环方式好,直接过滤出来了
------解决方案--------------------
还是让数据库来做吧,写 sql 或存储过程,实在不行重新建立视图也可以。