Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [MYSQL ]

  1. #1
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522

    [MYSQL ]

    si può fare una query di questo tipo:

    elimina tutti i valori di una tabella che NON sono distinct?! Ovvero dopo aver estratto i distinct è possibile cancellare tutti gli altri valori direttamente nella query?! Oppure visualizzarli (per capire i duplicati)?
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  2. #2
    se ho capito bene e se il tuo sql supporta le subqueries puoi fare:


    codice:
    DELETE FROM tabella WHERE dato NOT IN (SELECT DISTINCT dato FROM tabella)









    p.s. prima di provarlo fai un backup, che nel caso non andasse bene non vorrei aver sulla coscienza la perdita dei tuoi dati
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    esatto...
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  4. #4
    http://forum.html.it/forum/showthrea...llare+doppioni

    http://forum.html.it/forum/showthrea...llare+doppioni

    se vuoi visualizzarli puoi fare:
    codice:
    SELECT *, COUNT(*) AS tot
    FROM tabella
    GROUP BY nome_campo_doppione
    HAVING tot > 1

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Se un dato c'e' una volta e' "distinct" (dio solo sa che significa)

    Se non c'e' ... non e' distinct. manco vulgaris.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    una cosa del genere solo che: è per mySQL 3.23

    questa è la tabella con i valori... ti ho fatto un dump

    #
    # Struttura della tabella `prova`
    #

    CREATE TABLE prova (
    id int(11) NOT NULL auto_increment,
    utente varchar(211) NOT NULL default '',
    veicolo varchar(211) NOT NULL default '',
    PRIMARY KEY (id),
    KEY utente (utente,veicolo)
    ) TYPE=MyISAM;

    #
    # Dump dei dati per la tabella `prova`
    #

    INSERT INTO prova VALUES (1, 'paolo', 'audi');
    INSERT INTO prova VALUES (2, 'paolo', 'audi');
    INSERT INTO prova VALUES (3, 'paolo', 'mercedes');
    INSERT INTO prova VALUES (4, 'marco', 'golf');
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  7. #7
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    Piero la tua risposta è corretta e funziona anche su MySQL 3.23...

    e se voglio cancellarli invece?

    una cosa del tipo

    DELETE * AS tot FROM prova WHERE=(
    SELECT *, COUNT(*) FROM tot
    GROUP BY articolo
    HAVING tot > 1)

    come la faresti? ho letto l'articolo ma non si può fare con una query "diretta"...
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  8. #8
    un delete del genere non regge proprio, ne ora ne mai.

    la via migliore e' quella indicata nei post linkati. una tabella temporanea dove trasferisci con DISTINCT i record univoci che vuoi salvare. TRUNCATE o DELETE FROM TABELLA (forse in rel. 3 il truncate non funziona), oppure DROP e poi la ricrei, e quindi copia dalla tabella temporanea alla nuova creata.

    Oppure ancora: creare una nuova tabella, la popoli con INSERT ... SELECT DISTINCT, droppi la vecchia e rinonimi la nuova.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it L'avatar di flessciato
    Registrato dal
    Jun 2002
    Messaggi
    1,522
    lo so benissimo che non regge... era per farti capire in modo astratto che cosa dovrei fare. Dici che sia l'unico sistema usare una tabella duplicata?!
    Slack 10 - Apple G5 2.5 - winzoz xp
    php/mysql/apache
    Flash MX / roba in 3D / roba per il video e l'audio

  10. #10
    Originariamente inviato da flessciato
    lo so benissimo che non regge... era per farti capire in modo astratto che cosa dovrei fare. Dici che sia l'unico sistema usare una tabella duplicata?!
    non e' una tabella duplicata.

    copia i dati singoli in una nuova tabella
    cancelli in qualche modo la tabella con i dati duplicati
    rinomini o ricopi i dati dalla tabella nuova alla tabella liberata.

    Non e' l'unico modo, ma e' il piu' spiccio. E poi fai un controllo perche' non vengano piu' immessi dati duplicati.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.