| 
                     | 
                    
                        主题:  见鬼了!!这条sql语句太奇怪了.
                     | 
                
            
                        
                
                    
                          Lukiya 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:59 
                     | 
                    
                        
                            
                            #12004/12/20 2:06:56 
                            
                                string sSql = "SELECT TOP 5 SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = "+singerid+" ORDER BY ListenHits+DownHits DESC";
 
  当TOP 1和TOP 2时分别正常返回1行和2行数据.
  当大于3时就返回所有行纪录(例如TOP 3、TOP4、TOP5),怎么回事?!?!?!?
  第一次遇见这么奇怪的问题。
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          缺缺 
                        职务:管理员 
                        等级:8 
                        金币:41.0 
                        发贴:9620 
                     | 
                    
                        
                            
                            #22004/12/20 8:49:25 
                            
                                后面多出来的几条的记录的ListenHits+DownHits相等.
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          蓝鲸 
                        职务:版主 
                        等级:5 
                        金币:42.1 
                        发贴:2614 
                     | 
                    
                        
                            
                            #32004/12/20 9:12:39 
                            
                                可以加再加DISTINCT (ListenHits+DownHits),或者在显示时只显示前5条
                             
                            
                            非常大鱼 
                         
                     | 
                
                        
                
                    
                          Lukiya 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:59 
                     | 
                    
                        
                            
                            #42004/12/20 18:54:38 
                            
                                ………… 那我该怎么办?
  有没有什么方法让他们按点击总数排列,并且只显示 TOP N指定的条数??
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          蓝鲸 
                        职务:版主 
                        等级:5 
                        金币:42.1 
                        发贴:2614 
                     | 
                    
                        
                            
                            #52004/12/20 19:56:19 
                            
                                for 1 to 5显示前5条就可以了
                             
                            
                            非常大鱼 
                         
                     | 
                
                        
                
                    
                          Lukiya 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:59 
                     | 
                    
                        
                            
                            #62004/12/20 22:00:00 
                            
                                但是我要计算结果的数量, 因为结果可能不满5呀.
  加DISTINCT后会减少结果的,不能用
  郁闷.
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          东边日出 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:76 
                     | 
                    
                        
                            
                            #72004/12/21 14:17:07 
                            
                                曾经遇到过一次.因为我是的后面是.ORDER BY x_time DESC,改成ORDER BY x_ID  DESC就成了. 就是说,当按时间排列时,如果有时间相同的记录时,它会全列出来.而自动编号的ID号是唯一的.
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          Lukiya 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:59 
                     | 
                    
                        
                            
                            #82004/12/21 15:53:38 
                            
                                再说一次,用for循环可能会出现索引溢出错误.
  For(int i=0;i<5;i++) {   Response.Write(dv[i]["Name"]); }
  比如只有2条纪录,那么会报告索引错误的。 如果加了if判断又会增大程序开销,有没有Sql语句的办法直接规定提取多少条? 因为如果不够sql也不会提取错误的。
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          不是高手 
                        职务:普通成员 
                        等级:3 
                        金币:5.0 
                        发贴:1352 
                     | 
                    
                        
                            
                            #92004/12/21 16:11:03 
                            
                                晕啊,你用FOR了你循环的时候当然要判断一下拉 if rs.eof then exit for
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          Lukiya 
                        职务:普通成员 
                        等级:1 
                        金币:0.0 
                        发贴:59 
                     | 
                    
                        
                            
                            #102004/12/21 17:50:07 
                            
                                汗,C#里有EOF的用法??
  找到解决办法了,晕,原来用嵌套查询如此简单.大家都学一招吧.
  SELECT TOP "+amount.ToString()+" * FROM (SELECT SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = "+singerid+" ORDER BY (ListenHits+DownHits) DESC)";
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          缺缺 
                        职务:管理员 
                        等级:8 
                        金币:41.0 
                        发贴:9620 
                     | 
                    
                        
                            
                            #112004/12/21 18:40:29 
                            
                                if(i>dv.Count)break;
                             
                            
                            
                         
                     | 
                
                        
                
                    
                          蓝鲸 
                        职务:版主 
                        等级:5 
                        金币:42.1 
                        发贴:2614 
                     | 
                    
                        
                            
                            #122004/12/21 21:02:33 
                            
                                问题应该尽量简单化,虽然可用嵌套,但是在必要时才用的,嵌套的效率肯定不如简单的查询,尽量不要去做这样查询。在ASP程序中控制输出条数好了。
                             
                            
                            非常大鱼 
                         
                     |