Visualizzazione dei risultati da 1 a 6 su 6

Discussione: duplicati insert into

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    61

    duplicati insert into

    Salve ragazzi altro problema ho una tabella archivio con delle righe io devo fare un insert into verso un'altra tabella ogni minuto il problema che la prima volta funziona poi la seconda volta mi dice che trova un valore doppio pertanto non mi fa' l'insert,questo e' il comando che uso:

    INSERT INTO storico
    SELECT * FROM archivio WHERE a > b OR a < c;

    che devo aggiungere per non duplicare le righe?
    aggiungo i campi all'interno della tabella archivio:

    ID, IDS, A ,B, C, DATA, CHIAVE

  2. #2
    E' errato il principio usato.

    Se ripeti sempre quella query ti troverai sempre ripetuti i record precedentemente caricati.

    Siccome si tratta di un archivio non avrebbe manco senso usare la clausola ON DUPLICATE KEY UPDATE .... Dovresti leggere il valore dell'ultimo id inserito e poi formulare la query saltando i record gia' esplorati e caricati in precedenza.

    select max(id) from storico

    INSERT INTO storico
    SELECT * FROM archivio
    WHERE a > b OR a < c
    and id > massimo id trovato prima

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    61
    Ciao provo a fare come mi suggerisci e ti dico grazie

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Puoi fare tutto con un'unica query con lo stesso metodo della query di ieri

    codice:
    insert into storico 
    select * from archivio
    WHERE a > b OR a < c
    and id > (select * from (select max(id) from storico) as tab)

  5. #5
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431
    codice:
    INSERT IGNORE INTO storico
    SELECT * FROM archivio WHERE a > b OR a < c;
    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    61
    Grazie ragazzi siete veramente grandi

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.