mysql 如何根据条件删除重复行
我有一个表,表中有3列,列1 为case,列2 为 FDA_DT, 列3为 ISR. 我想对表进行去重,去重条件:对于具有相同CASE号的报告,选取FDA_DT值最新,即上报日期最新的报告;其次,对于CASE号和FDA_DT日期数据均相同的不良事件报告,选取ISR值最大的报告。程序代码:
select * from accpet insert into accpet values('2','20221010','11') insert into accpet values('3','20221015','11') insert into accpet values('2','20221012','15') insert into accpet values('2','20221010','14') --以上面的数据为例,对于表aa的记录进行扫描, --对于其中任一条记录,查询相同表中相同CASE的记录,查找其中是否存在FDA_DT>另一条FDA_DT的记录,如存在,扫描到的记录即不符合条件, --如不存在,即扫描到的记录符合where的条件,将作为查询结果. --第二个去重条件同理。 --注:内嵌的那条not EXISTS条件用小于是因为外部还有一个not EXISTS。 select aa.* from accpet aa where not EXISTS (select 1 from accpet bb where bb.icase=aa.icase and bb.FDA_DT>aa.FDA_DT and not EXISTS (select 1 from accpet cc where cc.icase=aa.icase and cc.FDA_DT=aa.FDA_DT and cc.ISR<aa.ISR))