Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460

    [MySQL / SQL in generale]

    Ciao a tutti,

    ho una domanda molto veloce inerente SQL.

    Avrei bisogno di sapere come fare a inserire un duplicato di una riga cambiando solo l'id.

    In pratica avrei bisogno di fare qualcosa del genere:

    INSERT INTO TABELLA (SELECT tutti_i_campi_a_parte_id) WHERE ID=quel_che_pare_a_me;

    In questo modo otterrei un duplicato della riga, ma con ID differente. Il fulcro di cui ho bisogno e' questo: per motivi che e' inutile stare a spiegare, ho bisogno di una query generica, in cui NON SO la lista dei campi, ma so solo il nome del campo id / primary key.

    So bene che se ho una tabella con:

    ID NOME

    posso fare INSERT into TABELLA (SELECT NOME FROM TABELLA WHERE ID=oldID");

    Ma se ho una tabella generale, non voglio dovermi estrare tutti i nomi dei campi. Quindi in pratica mi trovo nella situazione:

    ID COL1 COL2 COL3 ... COLN

    dove non so a priori i nomi di COLn.

    Si fa ?

    Grazie in anticipo
    There are 10 types of people in the world - those who understand binary and those who don't.

  2. #2
    direi che e' impossibile con una query.

    I casi sono due: o usi il default per i campi oppure elenchi tutti i campi che vuoi duplicare. Esiste pero' anche un altro problema. Lo standard ANSI SQL non permette che la tabella in INSERT sia uguale a quella in FROM del select. Sarebbe giocoforza quindi usare una tabella intermedia. Potresti fare:

    codice:
    create temporary table temp
    select * from tabella
    where id = 'nn';
    
    update temp set id = '';
    
    insert into tabella
    select * from temp;

    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.