下面是一个实际情况的变更,看似简单,想了半天竟然没搞出来,请同仁们赐教一下,不胜感激。情况如下:
 
假如有A B C三张表。
 
A:AID 、MessageNumber、User
B:  BID、MessageNumber、ImageNmae
C:  CID、ImageName、ImageURL、InDate
 
A中的一个Message可以对应B中多条Image(通过MessageNumber)。
B中一个ImageName对应C中一条数据(通过ImageName)。
通过C中的ImageURL可以判断出图片是否重复,如果itemURL相同,认为重复。
----------------------------------------------------------------------------------------------
要求删除B表中Message重复的Image信息,只保留重复Image中最新的一条,根据C表中的InDate判断。
注意:一条Message可能有多张图片,有些重复,有些不重复,并且重复条数不定。

解决方案 »

  1.   

    如果ImageURL相同,ImageName也相同如何处理?
      

  2.   

    不要意思,这个没有说清楚,可以认为ImageName不会相同,是唯一的,谢谢,请赐教。
      

  3.   

    可以先把C表itemURL有重复得给找出来,放到一张临时表中,然后应该就比较好做了。 
      

  4.   

    delete b
    where ImageNmae not in(
      select ImageNmae from c t where not exists(
        select 1 from c where ImageURL=t.ImageURL and InDate>t.InDate
      )
    )
    友情提示,删除数据之前最好先做好备份