Изменить данные одной ячейки в MySQL


156

Как я могу изменить данные только в одной ячейке таблицы MySQL. У меня проблема с UPDATE, потому что он изменяет все параметры в столбце, но я хочу изменить только один. Как?


что ты уже испробовал? Можете ли вы поделиться запросом, который вы используете? Обычно вы не обновляете «все параметры в столбце»
Нико Хаасе

Ответы:


191

Вам, вероятно, нужно указать, какие строки вы хотите обновить ...

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

1
Я был смущен этим ответом, думая, что SET выбрал строки для изменения, и ГДЕ их изменил.
Кит

может ли условие в WHERE быть column1 = old_value?
weefwefwqg3

@ weefwefwqg3, да, может, но смысла нет. Если вы не меняете значение, просто оставьте его вне части SET.
Брайан Хупер

1
@ Брайан Хупер: Мне нужно изменить значение, я хочу спросить, могу ли я сделать это: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3

2
@ weefwefwqg3, Ах, вижу, извините, близорукий приступ. Да, это было бы прекрасно.
Брайан Хупер

113

Мой ответ повторяет то, что говорили другие раньше, но я решил добавить пример, используя 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)

Спасибо за эту демонстрацию. Приведенный выше запрос обновит все экземпляры CDRECORD в вашем столбце aet. Однако при обновлении определенной ячейки в определенном столбце лучше делать это на основе идентификатора столбца, т. Е. Где ID = xx
Мухаммед

Обычно лучше использовать первичный ключ строк, уникальный идентификатор строк (который часто является идентификатором, но не всегда). Честно говоря, это зависит от того, что вы хотите сделать, что определяет «лучшую» практику
Garret Gang

30

UPDATE изменятся только те столбцы, которые вы указали.

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

Предложение WHEREограничивает, какие строки обновляются. Обычно вы используете это для определения значения первичного ключа (или идентификатора) вашей таблицы, чтобы вы обновляли только одну строку.

Предложение SETсообщает MySQL, какие столбцы обновлять. Вы можете перечислить столько столбцов, сколько захотите. Все, что вы не перечислите , не будет обновлено.


11

UPDATE изменяет только указанные вами значения:

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

9

Попробуйте следующее:

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

Пожалуйста, добавьте некоторые объяснения к вашему ответу, чтобы другие могли извлечь из этого урок - что это значит @parameterName ?
Нико Хаазе

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
Добро пожаловать в стек переполнения! Хотя этот фрагмент кода приветствуется и может оказать некоторую помощь, он будет значительно улучшен, если в него будет включено объяснение того, как он решает этот вопрос. Без этого ваш ответ имеет гораздо меньшую образовательную ценность - помните, что в будущем вы отвечаете на вопрос читателей, а не просто того, кто спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение и указать, какие ограничения и предположения применяются.
Тоби Спейт

0

Некоторые из столбцов в MySQL имеют предложение «при обновлении», см .:

mysql> SHOW COLUMNS FROM your_table_name;

Я не уверен, как обновить это, но опубликую изменение, когда я узнаю.


Если есть «при обновлении», оно будет в столбце «Дополнительно» таблицы, которую вы получите при выполнении вышеуказанной команды.
Jake_Howard
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.