Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Delete distinct

  1. #1

    Delete distinct

    Ho un database nel quale le righe sono duplicate.
    Cioe' al posto di averne una ne ho due identiche e questo per tutti gli elementi.
    Qualcuno sa aiutarmi.
    Ho proovato a usare il distinct con il delete, ma non riesco a trovare la combinazione giusta, mi da un errore di suntassi

  2. #2
    Non mi sa aitare nessuno ?

  3. #3
    Io farei un select distinct, copierei il risultato in una nuova tabella, pulirei la tabella incriminata e la sostituirei quella nuova con quella vecchia

    la procedura è macchinosa però non mi viene in mente altro

  4. #4

    Grazie

    E' vero e' una procedura macchinosa pero' probabilmete e' una delle poche percorribili.
    Ti ringrazio per lo spunto

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Scusate se riesumo il post vecchissimo, ma io ho lo stesso problema ed ho in mente una soluzione altrettanto macchinosa.

    Vi propongo dunque la mia, ma mi sembra proprio strano che non esistano comandi SQL che trovino e cancellino righe duplicate... dovrebbe essere un caso comune, no, trovare righe in un db uguali.

    Allora io pensavo si potesse fare cosi':

    - si legge il primo record
    - si scrive in una variabile
    - si leggono tutti i record dal secondo all'ultimo. se se ne trova uno uguale a quello trovato lo si cancella.

    - si legge il secondo record
    - si scrive in una varibile
    - si leggono tutti i record dal terzo all'ultimo. se se ne trova uno uguale a quello trovato lo si cancella.

    ecc ecc ecc

    cosi' facendo però bisogna fare moltissime query ed il numero dei ceck aumenta in maniera esponenziale con le righe.

    ad esempio già con solo 1000 record si avrebbero:

    (1000x1000)-1000 query, cioe' 999000 query
    (riga_lettaXrighe_confrontate)-eccezione riga letta

    cioe' quasi un milione di query per sole 1000 righe...

  6. #6
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    basta fare una query con una join della tabella con se stessa
    Tutti vogliono parlare, nessuno sa ascoltare.

  7. #7
    Utente di HTML.it L'avatar di seclimar
    Registrato dal
    Sep 2002
    Messaggi
    21,042
    Originariamente inviato da Gioba66
    basta fare una query con una join della tabella con se stessa
    infatti

    in ogni caso dipende se i record sono totalmente ugualioppure se si differenziano ad esempio con una chiave....

    si fa una delete collegata con una select distinct

  8. #8
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    il problema dei duplicati andrebbe comunque affrontato al momento della progettazione del db; purtroppo spesso si subentra a lavorare su db progettati male...
    Tutti vogliono parlare, nessuno sa ascoltare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.