|
Archives of the TeradataForumMessage Posted: Thu, 09 Sep 2004 @ 12:56:28 GMT
You ask if it is possible - and the answer is yes BUT it might not be advisable - only thing I can think about might be in case you have billions of rows in a multiset table and only a hand full are duplicate and need to be removed... The following works (need to be executed in ANSI mode and need V2R5!!!): 1. alter table and add a field which can used to keep an unique ID. 2. Create a stored procedure which is updating the unique_ID field for a given -PK. 3. Call the SP for all PK's where duplicates exists. 4. Delete where unique_id field > 1; 5. alter table an remove unique ID fields This works technical BUT be careful!!! Ulrich Example SQL: create multiset table a ( a integer ); commit; insert into a values (1); insert into a values (2); insert into a values (2); insert into a values (3); insert into a values (3); insert into a values (3); commit; select * from a; alter table a add unique_id integer; commit; select * from a; CREATE PROCEDURE upd_a (in a integer) BEGIN DECLARE U_ID INTEGER; SET U_ID = 0; FOR for_loop AS cursor1 CURSOR FOR SELECT cast(a as varchar(1000)) as a FROM a where a = :a DO SET U_ID = U_ID + 1; UPDATE a SET unique_id = :U_ID WHERE CURRENT OF cursor1; END FOR; END; COMMIT; call upd_a(2); call upd_a(3); select * from a order by 1,2; delete from a where unique_id > 1; select * from a order by 1,2; alter table a drop unique_ID; commit; select * from a order by 1; drop PROCEDURE upd_a; commit; drop table a; commit; --
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||