Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168

    selezionare righe di una tabella che hanno un campo uguale

    Ciao, voglio selezionare le righe che hanno un campo uguale. Mi spiego meglio: ho una tabella costituita da campo a, campo b, campo c. Io voglio visualizzare tutte le righe che hanno lo stesso campo b. Quale query devo lanciare?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non ho capito.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Ok..

    campo a campo b campo c
    2 4 7
    24 4 543
    2 4 43
    6543 3 89
    87 5 43
    656 8 654
    885 8 49

    io voglio visualizzare le righe che hanno lo stesso campo b e quindi:

    2 4 7
    24 4 543
    2 4 43

    656 8 654
    885 8 49

    E' più chiaro?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ora sì.

    codice:
    select * from tabella where b in (
    select b from tabella
    group by b
    having count(b) > 1)
    edit. Oppure, meglio ancora:

    codice:
    select t1.* from tabella as t1 
    inner join 
    (select b from tabella
    group by b
    having count(b) > 1) as t2
    on t1.b = t2.b

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Ok...meglio la seconda! Grazie mille
    Ho notato che nel mio DB ci sono molti duplicati.
    La query per eliminarli è la seguente?

    select distinct *
    from nome_tabella

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da lilux
    La query per eliminarli è la seguente?

    select distinct *
    from nome_tabella
    In base a quale criterio decidi quale record tenere e quali eliminare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Ho notato che hanno TUTTI i campi uguali (e non solo quello da me indicato) quindi credo che non ci sia alcun criterio da utilizzare. Mi basta che rimanga un record!

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mah, vedi un pò come devi raggrupparle, cioè se con

    select * from tabella group by a,b,c

    oppure se basta

    select * from tabella group by b

    dipende dalle tue esigenze che non conosco.

    A quel punto crei una tabella identica a quella già esistente

    create table tabella2 like tabella;

    e poi importi i singoli record rimuovendo i doppioni, quindi

    insert into tabella2
    select * from tabella group by uno_dei_due_raggruppamenti_scritti_all_inizio

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Invece di creare un'altra tabella, non c'è un modo di eliminare semplicemente i duplicati?
    Il mio intento è quello di avere la tabella in cui non compaiano righe identiche perchè ridondanti!

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    delete from tabella where id not in (select * from (select id from tabella group by a,b,c) as t)
    Per precauzione provala su una copia della tua tabella.

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.