在mysql中更改一个单元格的数据


156

如何仅更改mysql表的一个单元格中的数据。我对UPDATE有问题,因为它会使列中的所有参数发生变化,但我只希望更改其中一个。怎么样?


你都尝试了些什么?可以共享您正在使用的查询吗?通常,您不会更新“列中的所有参数”
Nico Haase

Answers:


191

您可能需要指定要更新的行...

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

1
我对这个答案感到困惑,以为SET选择了要更改的行,而WHERE更改了它们。
基思(Keith)

WHERE中的条件可以是column1 = old_value吗?
weefwefwqg3

@ weefwefwqg3,是的,可以,但是没有意义。如果您不更改值,则将其保留在SET部分之外。
Brian Hooper '18

1
@布赖恩·胡珀:我确实需要更改的价值,我的意思是问我是否可以这样做:UPDATE mytable SET column1 = new_value WHERE column1 = old_value;
weefwefwqg3

2
@ weefwefwqg3,啊,对不起,我是近视发作。是的,那会很好。
布莱恩·胡珀

112

我的回答是重复其他人以前说过的内容,但我想我会添加一个示例,使用MySQL,只是因为先前的回答对我来说有点神秘。

您需要用来更新单行列的命令的一般形式:

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

这是一个例子。

之前

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

进行更改

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

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

感谢您的演示。上面的查询将更新列aet中所有CDRECORD的实例。但是,更新特定列中的特定单元格时,最好根据列的ID进行操作,即ID = xx
Mohammed

通常最好使用行主键,行唯一标识符(通常是ID,但不总是)。老实说,这取决于您要定义“最佳”实践的操作
Garret Gang

30

UPDATE 将仅更改您专门列出的列。

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

WHERE子句限制要更新的行。通常,您将使用它来识别表的主键(或ID)值,以便仅更新一行。

SET子句告诉MySQL要更新哪些列。您可以根据需要列出任意多的列。任何你不列表将不会得到更新。


11

UPDATE 仅更改您指定的值:

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

9

尝试以下方法:

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

请在您的答案中添加一些解释,以使其他人可以从中汲取教训-这样做是@parameterName 什么?
Nico Haase

7

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

例:

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

3

试试这个。

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

1
欢迎使用Stack Overflow!尽管此代码段是受欢迎的,并且可以提供一些帮助,但是如果它包含有关如何解决该问题的说明,则将大大改善。否则,您的答案的教育价值将大大降低-请记住,您将来会为读者回答问题,而不仅仅是现在问的人!请编辑您的答案以添加说明,并指出适用的限制和假设。
Toby Speight

0

MySQL中的某些列具有“ on update”子句,请参见:

mysql> SHOW COLUMNS FROM your_table_name;

我不确定如何更新它,但是发现后会发布修改。


如果有“更新中”,它将在您执行上述命令时在表的“其他”列中。
Jake_Howard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.