首页 > 解决方案 > SQLite 删除没有最大索引的行

问题描述

我已经尝试过搜索功能,最合适的结果是这样,它似乎不适用于我的情况(?!):

[ sql,只保留最大值并删除其他值

我有一张这样的桌子

 parentassembly | "Index" | partumber 
-----------------  ------------ -------------
pA 1| _00| part1 
pa 1| _00| part2
pa 1|_ab| part1
pa 1|_ab| part3
pa 1|_af| part1
pa 1|_af| part2
pa 1|_af| part3
pa 1|_af| part4
pa 2| |part12
pa 2|| part...  
pa 2|....| .....

我只需要索引最高的父程序集和后续部分。

索引可以是数字或字母数字或空的。

如果我尝试链接中显示的方法,但改为进行计数,我不会得到与所有表行不同的数字

select count(*)
 (...or delete r....) 
from pa_save r left join
    (select parentassembly, Max("Index") as maxindex
        from pa_save
        group by parentassembly
        ) rn
        on r.ParentAssembly = rn.ParentAssembly = rn.maxindex
    where rn.ParentAssembly is null;

我已经尝试过使用子查询,也没有归档不同的结果......

delete from  pa_save 
where parentassembly not in 
    (select parentassembly from pa_save where "Index" = 
    (select MAX("Index") from pa_save as pa_save2 
          where pa_save2.parentassembly = pa_save.parentassembly));

除此之外,它似乎不起作用,子查询需要无穷无尽的......

任何见解将不胜感激。

亲切的问候,

托拜厄斯

标签: sqlsqlite

解决方案


您的第一个查询有几个语法异常。这是做你想做的事吗?

select r.*
from pa_save r join
     (select parentassembly, Max("Index") as maxindex
      from pa_save
      group by parentassembly
     ) rn
     on r.ParentAssembly = rn.ParentAssembly and
        r."Index" = rn.maxindex;

推荐阅读