Modifica i dati di una cella in mysql


156

Come posso modificare i dati in una sola cella di una tabella mysql. Ho un problema con UPDATE perché modifica tutti i parametri in una colonna ma ne voglio solo uno modificato. Come?


Cosa hai provato fino ad ora? Puoi condividere la query che stai utilizzando? Di solito, non aggiorni "tutti i parametri in una colonna"
Nico Haase,

Risposte:


191

Probabilmente dovrai specificare quali righe vuoi aggiornare ...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;

1
Sono stato confuso da questa risposta, pensando che SET abbia selezionato le righe da cambiare e DOVE le abbia cambiate.
Keith,

la condizione in WHERE può essere column1 = old_value?
weefwefwqg3,

@ weefwefwqg3, sì, può, ma non ha senso. Se non si modifica il valore, lasciarlo fuori dalla parte SET.
Brian Hooper

1
@Brian Hooper: ho bisogno di cambiare il valore, intendo chiedere se posso farlo: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3,

2
@ weefwefwqg3, Ah, vedo, scusa, un attacco di miopia. Sì, sarebbe perfetto.
Brian Hooper,

113

La mia risposta è ripetere ciò che altri hanno detto prima, ma ho pensato di aggiungere un esempio, usando MySQL, solo perché le risposte precedenti erano un po 'enigmatiche per me.

La forma generale del comando che devi usare per aggiornare la colonna di una singola riga:

UPDATE my_table SET my_column='new value' WHERE something='some value';

Ed ecco un esempio.

PRIMA

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10104 | 
+------------+-------+
2 rows in set (0.00 sec)

EFFETTUARE IL CAMBIAMENTO

mysql> update ae set port='10105' where aet='CDRECORD';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

DOPO

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10105 | 
+------------+-------+
2 rows in set (0.00 sec)

Grazie per questa dimostrazione La query sopra aggiornerà tutte le istanze di CDRECORD nella colonna aet. Tuttavia, quando si aggiorna una cella specifica in una colonna specifica, è meglio farlo in base all'ID della colonna, ovvero dove ID = xx
Mohammed

Di solito è meglio usare la chiave primaria di righe, l'identificatore univoco di righe (che spesso è l'ID, ma non sempre). Onestamente dipende da cosa vuoi fare che definisce la "migliore" pratica
Garret Gang

30

UPDATE cambierà solo le colonne che elenchi in modo specifico.

UPDATE some_table
SET field1='Value 1'
WHERE primary_key = 7;

La WHEREclausola limita le righe che vengono aggiornate. Generalmente lo useresti per identificare il valore della chiave primaria (o ID) della tabella, in modo da aggiornare solo una riga.

La SETclausola indica a MySQL quali colonne aggiornare. Puoi elencare quante o quante colonne desideri. Tutti quelli che non vengono elencati non verranno aggiornati.


11

UPDATE cambia solo i valori specificati:

UPDATE table SET cell='new_value' WHERE whatever='somevalue'

9

Prova quanto segue:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName

Per favore aggiungi qualche spiegazione alla tua risposta in modo che altri possano imparare da essa - che cosa fa @parameterName ?
Nico Haase,

7

AGGIORNA TABELLA <tablename> SET <COLUMN=VALUE> DOVE <CONDITION>

Esempio:

UPDATE TABLE teacher SET teacher_name='NSP' WHERE teacher_id='1'

3

prova questo.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';

1
Benvenuto in Stack Overflow! Sebbene questo frammento di codice sia il benvenuto e possa fornire qualche aiuto, sarebbe notevolmente migliorato se includesse una spiegazione di come affronta la domanda. Senza questo, la tua risposta ha un valore educativo molto inferiore: ricorda che in futuro stai rispondendo alla domanda per i lettori, non solo per la persona che chiede ora! Si prega di modificare la risposta di aggiungere una spiegazione, e dare un'indicazione di ciò si applicano le limitazioni e le assunzioni.
Toby Speight,

0

Alcune delle colonne in MySQL hanno una clausola "in aggiornamento", vedi:

mysql> SHOW COLUMNS FROM your_table_name;

Non sono sicuro di come aggiornarlo, ma pubblicherò una modifica quando lo scoprirò.


Se c'è un "in aggiornamento" sarà nella colonna "Extra" della tabella che otterrai quando esegui il comando sopra.
Jake_Howard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.