Alterar dados de uma célula no mysql

156

Como posso alterar os dados em apenas uma célula de uma tabela mysql. Estou com um problema com UPDATE porque ele altera todos os parâmetros em uma coluna, mas quero apenas um. Quão?

kasrsf
fonte
O que você tentou até agora? Você pode compartilhar a consulta que está usando? Normalmente, você não atualiza "todos os parâmetros em uma coluna"
Nico Haase

Respostas:

191

Você provavelmente precisará especificar quais linhas deseja atualizar ...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;
Brian Hooper
fonte
1
Fiquei confuso com essa resposta, pensando que SET selecionava as linhas a serem alteradas e ONDE as alterava.
Keith
a condição em WHERE pode ser column1 = old_value?
precisa saber é o seguinte
@ weefwefwqg3, sim, pode, mas não faz sentido. Se você não estiver alterando o valor, deixe-o fora da parte SET.
Brian Hooper
1
Brian Hooper: Eu preciso alterar o valor, quero perguntar se posso fazer isso: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3
2
@ weefwefwqg3, Ah, vejo, desculpe, um ataque de miopia. Sim, isso seria perfeitamente bom.
Brian Hooper
112

Minha resposta está repetindo o que os outros disseram antes, mas pensei em adicionar um exemplo, usando MySQLapenas porque as respostas anteriores eram um pouco enigmáticas para mim.

A forma geral do comando que você precisa usar para atualizar a coluna de uma única linha:

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

E aqui está um exemplo.

ANTES

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

FAZENDO A MUDANÇA

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

DEPOIS DE

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10105 | 
+------------+-------+
2 rows in set (0.00 sec)
slm
fonte
Obrigado por esta demonstração. A consulta acima atualizará todas as instâncias do CDRECORD na sua coluna. No entanto, ao atualizar uma célula específica em uma coluna específica, é melhor fazer isso com base na identificação da coluna, isto é, onde ID = xx
Mohammed
Geralmente, é melhor usar a chave primária das linhas, o identificador exclusivo das linhas (que geralmente é o ID, mas nem sempre). Honestamente isso depende do que você quer fazer, que define o "melhor" prática
Garret Gang
30

UPDATE alterará apenas as colunas listadas especificamente.

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

A WHEREcláusula limita quais linhas são atualizadas. Geralmente, você usaria isso para identificar o valor da chave primária (ou ID) da sua tabela, para atualizar apenas uma linha.

A SETcláusula informa ao MySQL quais colunas atualizar. Você pode listar quantas ou quantas colunas desejar. Qualquer um que você não listar não será atualizado.

VoteyDisciple
fonte
11

UPDATE altera apenas os valores que você especificar:

UPDATE table SET cell='new_value' WHERE whatever='somevalue'
grunhido
fonte
9

Tente o seguinte:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName
user3668628
fonte
Por favor, adicione alguma explicação à sua resposta para que outras pessoas possam aprender com ela - o que isso @parameterName faz?
Nico Haase
7

UPDATE TABLE <tablename> SET <COLUMN=VALUE> ONDE <CONDITION>

Exemplo:

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

tente isso.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';
abhay
fonte
1
Bem-vindo ao Stack Overflow! Embora esse trecho de código seja bem-vindo e possa fornecer alguma ajuda, ele seria bastante aprimorado se incluísse uma explicação de como ele aborda a questão. Sem isso, sua resposta tem muito menos valor educacional - lembre-se de que você está respondendo à pergunta dos leitores no futuro, não apenas à pessoa que está perguntando agora! Por favor edite sua resposta para adicionar explicação, e dar uma indicação do que limitações e premissas se aplicam.
Toby Speight
0

Algumas das colunas no MySQL possuem uma cláusula "on update", consulte:

mysql> SHOW COLUMNS FROM your_table_name;

Não sei como atualizar isso, mas publicarei uma edição quando descobrir.

Jake_Howard
fonte
Se houver um "em atualização", ele estará na coluna "Extra" da tabela que você obtém ao executar o comando acima.
24412 Jake_Howard