Blupixel IT Blog – Articoli e Tutorial Informatica e Programmazione

Blog ufficiale di Blupixel IT Srl

Selezionare doppioni e duplicati in PostgreSQL mediante l’utilizzo di una query con opzione EXCEPT e DISTINCT ON

PostgreSQL permette l’utilizzo dell’utilissima funzione DISTINCT per selezionare le righe differenti rispetto ad un campo.
Ma come fare per selezionare le righe uguali indipendentemente dalla conoscenza del contenuto del campo?

Vediamo una soluzione:

Supponiamo di avere una tabella anagrafica con persone iscritte più volte utilizzando ad esempio lo stesso numero di telefono.

Vogliamo sapere quali sono le persone duplicate attraverso la conoscenza di questa unica condizione: Le persone duplicate nel databse hanno lo stesso numero di telefono nel campo telefono_1

A questo punto, volessimo selezionare solo le righe senza doppioni nel numero di telefono potremmo semplicemente eseguire la query:

SELECT DISTINCT ON (telefono_1) * FROM anagrafica

In questo modo selezioneremmo dalla tabella anagrafica tutti i campi di tutte le righe i cui numeri di telefono sono diversi.

Volendo invece prendere tutti i campi di tutte le righe con lo stesso numero di telefono dovremo fare:

SELECT * FROM anagrafica EXCEPT SELECT DISTINCT ON (telefono_1) * FROM anagrafica

Con questo comando, infatti, selezioneremo tutte le righe dell’anagrafica ESCLUDENDO (EXCEPT) quelle che contengono numeri di telefono distinti. Quindi selezioneremo solo i doppioni!

Decidendo un ordinamento con l’aggiunta di “ORDER BY …” potremo anche decidere se selezionare come doppione il primo inserito oppure l’ultimo

Alla prossima