viernes, 31 de enero de 2014

Source code: Registros duplicados - SQLite

Código fuente para probar registros duplicados

Ver la entrada correspondiente en el siguiente enlace:


Registros duplicados en PostgreSQL (y otros sistemas)



BEGIN;
-------------------------------------------------------------------------------

CREATE TABLE test1(first INTEGER, second TEXT, third TEXT)
--WITHOUT ROWID --SQLite 3.8.2
;

INSERT INTO test1 VALUES (0, 'zero' , 'OK' );
INSERT INTO test1 VALUES (0, 'zero' , 'OK' );
INSERT INTO test1 VALUES (0, 'zero' , 'OK' );
INSERT INTO test1 VALUES (1, 'one'  , 'OK' );
INSERT INTO test1 VALUES (2, 'two'  , 'OK' );
INSERT INTO test1 VALUES (3, 'three', 'OK' );

--Para ver las columnas ocultas.
SELECT *
     , oid --SQLite
FROM test1
;

--Para ver sólo los registros duplicados.
SELECT COUNT(*), first, second, third FROM test1 GROUP BY first, second, third HAVING (COUNT(*) > 1);

--SQLite.
--Para borrar todos los repetidos menos uno usando OID.
DELETE FROM test1
WHERE oid NOT IN (SELECT min(oid) FROM test1 GROUP BY first, second, third)
;

--Para ver lo que queda finalmente en la tabla.
SELECT * FROM test1;

DROP TABLE test1;
-------------------------------------------------------------------------------

ROLLBACK;

2 comentarios: