From cfb85580eac75a99dacb39d5e3a25ca8c999ccad Mon Sep 17 00:00:00 2001 From: Monika Komorowska <mk8@sanger.ac.uk> Date: Mon, 9 May 2011 13:07:48 +0000 Subject: [PATCH] Stored procedure to delete duplicates from table unmapped_object. --- sql/delete_duplicates.sql | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 sql/delete_duplicates.sql diff --git a/sql/delete_duplicates.sql b/sql/delete_duplicates.sql new file mode 100644 index 0000000000..9069483a22 --- /dev/null +++ b/sql/delete_duplicates.sql @@ -0,0 +1,40 @@ +CREATE PROCEDURE delete_duplicates() +BEGIN + +DECLARE v_identifier varChar(255); +DECLARE v_unmapped_object_id INT; +DECLARE existing_object_id INT DEFAULT 0; +DECLARE v_parent varChar(255); +DECLARE v_ensembl_id INT; +DECLARE v_unmapped_reason_id INT; +DECLARE v_ensembl_object_type varChar(15); +DECLARE v_external_db_id INT; +DECLARE done INT DEFAULT 0; +DECLARE row_count INT DEFAULT 0; + +DECLARE cur1 CURSOR FOR SELECT unmapped_object_id, identifier, ensembl_id, parent, unmapped_reason_id, ensembl_object_type, external_db_id from unmapped_object where ensembl_id is not null and parent is not null and ensembl_object_type is not null and external_db_id is not null order by unmapped_object_id; +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +OPEN cur1; + +main_loop: LOOP + + SET done = FALSE; + FETCH cur1 INTO v_unmapped_object_id,v_identifier, v_ensembl_id, v_parent, v_unmapped_reason_id, v_ensembl_object_type, v_external_db_id; + + IF done THEN + LEAVE main_loop; + END IF; + + SET row_count = 0; + SELECT COUNT(1) INTO row_count FROM unmapped_object WHERE identifier = v_identifier and ensembl_id = v_ensembl_id and parent = v_parent and unmapped_reason_id = v_unmapped_reason_id and ensembl_object_type = v_ensembl_object_type and external_db_id = v_external_db_id; + IF row_count > 1 THEN + DELETE FROM unmapped_object where unmapped_object_id <> v_unmapped_object_id and identifier = v_identifier and ensembl_id = v_ensembl_id and parent = v_parent and unmapped_reason_id = v_unmapped_reason_id and ensembl_object_type = v_ensembl_object_type and external_db_id = v_external_db_id; + + END IF; +END LOOP; + +CLOSE cur1; + +END + -- GitLab