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).
