删去排序不为1的记录
这里记录一种,删去排序不为1的记录,的方法。
这大概是我第二次用到这种查询。
两次的应用场景差不多,我需要在临时表中,按某种规则给记录排序,然后删去排序不为1的记录,也就是保留最好的一条。
这个和多条记录取一条是类似的,那个也可以先排序,再按照排序来取数据。
虽然上次写过,但是这次还是感觉卡壳,在这里记录一下上次的方案。
--如果不显示下级分类,表2要删除重复的,评分高的,概念编号小的优先保留 if(@IsXianShiXiaJiFenLei = 0) begin DELETE from #tb2 WHERE id IN ( SELECT id FROM ( SELECT *,RANK() OVER(PARTITION BY symbol ORDER BY isnull(GaiNianPingJi,0) DESC,Id) AS rnFenLei FROM #tb2 )Ranked WHERE Ranked.rnFenLei>1 ); end
在这个例子里,我要保留评分高的,编号小的。
那么我的排序大概是:order by 评分 desc,编号。
后面,就是删除排序大于1的了。
如果是多条记录取一条的话,我可以容易的取出排序等于1的。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号