Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [MySQL] Copiare campo da una riga ad un'altra

    Devo copiare il valore del campo code dalla riga 40 alla riga 50 della tabella tbl1:

    Codice PHP:
    $query "UPDATE tbl1 SET code = (SELECT code FROM tbl1 WHERE row=40)
    WHERE row=50"

    Su phpMyAdmin la query restituisce:
    #1093 - You can't specify target table 'tbl1' for update in FROM clause

    Quale la sintassi corretta per aggiornare il campo con il valore selezionato?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    estrai il valore in una variabile e poi lo inserisci.
    codice:
    set @var = (SELECT code FROM tbl1 WHERE row=40);
    
    UPDATE tbl1 SET code = @var
    WHERE row=50;

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

  3. #3
    Grazie,
    ho provato inserendo il codice nella console SQL di phpMyAdmin, ottenendo questo output:

    codice:
    SET @var = ( SELECT code
    FROM tbl1
    WHERE row =40 ) ;# MySQL ha restituito un insieme vuoto (i.e. zero righe).
    UPDATE tbl1 SET code = @var WHERE row =50;# Righe interessate: 1
    Da cui sembrerebbe che la prima subquery "SELECT code FROM tbl1 WHERE row=40" non restituisce nulla, mentre invece se inviata singolarmente restituisce una riga contenente la giusta stringa.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    le due queries vanno eseguite nella stessa finestra SQL.

    Non ho idea di cosa ci sia nella tua tabella, mi sono limitato a interpretare quanto hai scritto tu.

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

  5. #5
    Certo, ho inserito interamente il tuo codice in un'unica finestra SQL (unica query), non l'ho separata.

    In questo caso si ottiene (sempre in unico blocco) l'output che ho riportato sopra, da cui si evince che il pezzo di query
    SELECT code FROM tbl1 WHERE row=40
    restituisce zero righe.

    Dicevo però che se metto solo quel pezzo nella finestra SQL, viene restituita una riga (il risultato che mi aspettavo).
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  6. #6
    puo' darsi che sia corretto cosi'... non restituisce nulla perche' lo mette nella variabile, ma l'operazione si dovrebbe essere conclusa .... cioe' ha scritto il contenuto dell'id 40 dentro il campo di id 50... controlla

    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.