Visualizzazione dei risultati da 1 a 7 su 7

Discussione: query su 2 tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    query su 2 tabelle

    salve a tutti ho una situazione del genere nel db (mysql)

    tabella1 campo1
    tabella2 campo2

    dove campo1 e campo2(delle 2 rispetive tabelle) dovrebbero contenere gli stessi record altrimenti devo eliminarli

    es campo1:
    10
    20
    30
    50

    es campo2:
    10
    20
    30
    50
    80 //non è presente in campo1 quindi va eliminato

    tratandosi di decine di migliaia di rescords qual'è il modo più efficiente per eseguire questa query??

    grazie.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per precauzione fai così

    codice:
    create table copia_tabella1
    select t1.* from tabella1 t1
    inner join tabella2 t2
    on t1.campo1 = t2.campo2
    idem per l'altra

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    scusa non ti seguo..perchè creare una nuova tabella, non mi basta eseguire la query su entrambe ed eliminare i records non duplicati??

  4. #4
    potresti fare una

    DELETE tabella2 WHERE campo NOT IN (SELECT campo FROM tabella1)

    ma non è il massimo della performance

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    ..il problem è prorpio la performance sono piantato da 2 ore con una inner join...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    Originariamente inviato da optime
    potresti fare una

    DELETE tabella2 WHERE campo NOT IN (SELECT campo FROM tabella1)

    ma non è il massimo della performance
    intendevi:

    DELETE tabella2.campo2 WHERE tabella2.campo2 NOT IN (SELECT campo1 FROM tabella1)

    giusto?? devo eliminare i records non la tabella

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    A tuo rischio e pericolo.

    codice:
    delete t1,t2 from tabella1 as t1
    left join tabella2 as t2
    on t1.campo1 = t2.campo2
    where t2.campo2 is null;
    
    delete t2,t1 from tabella2 as t2
    left join tabella1 as t1
    on t1.campo1 = t2.campo2
    where t1.campo1 is null;

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.