SQL: Selezionare righe duplicate

SQL: Selezionare righe duplicate

Esiste una query per selezionare le righe di una tabella che hanno un valore in comune? Scopriamolo assieme.

Ogni buon programmatore, che ha a che fare quotidianamente con i database, si troverà prima o poi a dovere ricavare le righe duplicate di una tabella, quelle cioè che hanno uno o più campi in comune. Una specie di "SELECT NOT DISTICT", come erroneamente viene codificato da molti, andando incontro ad un sicuro errore.

Ad esempio, potremmo estrarre dal database di un negozio di assistenza tutti i computer con lo stesso numero seriale, cioè quelli riparati più di una volta. La query corretta è la seguente:

SELECT numero_seriale, nome_cliente, data_riparazione
FROM assistenza
WHERE numero_seriale IN (
    SELECT numero_seriale
    FROM assistenza
    GROUP BY numero_seriale
    HAVING COUNT(*) > 1
);

Una query come questa è utile anche in casi di database corrotti, che presentano dati erroneamente duplicati. Fatene buon uso e per qualunque domanda potete lasciare un commento qui sotto.

Notes

tags sql, select, distict

Publication details

Category: MySQL

Published by: loryzz on date: 02.10.2009 11:40:53

Last edit by: loryzz on date: 02.10.2009 11:41:54

Statistics

Details  This article has been viewed 3.339 times.

Send to

add to digg add to reddit add to furl add to facebook add to delicious add to google add to stumbleupon add to technorati add to ask add to live

Ratings

  • Currently 0; ?>/ TOTALSTARS
  • 1
  • 2
  • 3
  • 4
  • 5

Comments

Details 2 user comments, 0 still waiting.

  1. Comment by: ivan on date: 05.11.2010 17:55:57

    Scusa, ho bisogno di tale aiuto:
    Ciao ragazzi, sono nuovo e ho bisogno di un aiuto urgente. Mi sapete aiutare?

    ho una tabella di questo tipo

    id posParola frequenza

    10 9 12
    10 2 9
    123 1 8
    123 2 5
    123 3 3
    125 7 4
    125 5 6

    vorrei salvare su una nuova tabella solo le righe per ogni id tali per cui ho
    la frequanza magggiore. Dunque se ad esempio n vale 1
    vorrei avere le righe

    10 9 12
    123 1 8
    125 5 6

  2. Comment by: loryzz on date: 05.11.2010 22:42:33

    @ivan » Questo sito offre molto materiale gratuito: guide, articoli, premi, e-book, strumenti per webmaster. Naturalmente per potere trovare il tempo per offrire tutto ciò non possiamo anche offrire consulenze gratuite. Se hai bisogno della nostra consulenza puoi utilizzare la sezione "Contatti".

Leave a comment

All comments must be approved by site administrator.
Please write comments on topic. Spam will be never approved.


Confirmation code

Please take a look to image and insert character into the form field.