Given a business rule that says a combination of three columns must be
unique if and only if a fourth column equals a certain value, and if
the table in question contains rows that violate this requirement, I'm
trying to write a single SQL statement that will remove the duplicates.
 Of each set of duplicate rows, I'll delete the one with the latest
insert timestamp.  

Let's call the columns

a  b  c  d  timestamp

The combination of b, c, and d must be unique if a = 2.  

I can get the duplicate row values along with the latest timestamp via

select max(tstamp), a, b, c from
my_table group by a, b, c having count(*) > 1

But I can't figure out how to use that in a delete statement.

Suggestions greatly appreciated!


Paul Baumgartel


__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Paul Baumgartel
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to