删去排序不为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的。

 

posted @ 2022-08-31 09:19  法宝  阅读(37)  评论(0)    收藏  举报