Змінення даних однієї комірки в mysql


156

Як я можу змінити дані лише в одній комірці таблиці mysql. У мене проблема з ОНОВЛЕННЯМ, оскільки вона робить усі параметри в стовпці зміненими, але я хочу лише один. Як?


Що ви пробували поки що? Чи можете ви поділитися запитом, який ви використовуєте? Зазвичай ви не оновлюєте "всі параметри в стовпці"
Ніко Хааз

Відповіді:


191

Вам, ймовірно, потрібно вказати, які рядки ви хочете оновити ...

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

1
Мене бентежила ця відповідь, думаючи, що SET вибрав рядки для зміни, і де їх змінив.
Кіт

Чи може умова, де БУДЬ стовпчик1 = старе значення?
weefwefwqg3

@ weefwefwqg3, так, може, але немає сенсу. Якщо ви не змінюєте значення, просто залиште його поза частиною SET.
Брайан Хупер

1
@Brian Hooper: Мені потрібно змінити значення, я маю на увазі запитати, чи можу я це зробити: 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)

Дякую за цю демонстрацію. Вищенаведений запит оновить усі екземпляри CDRECORD у колонці aet. Однак, оновлюючи конкретну комірку в конкретному стовпчику, краще це робити на основі ідентифікатора стовпця, тобто де ID = xx
Мохаммед

Зазвичай найкраще використовувати первинний ключ рядків, унікальний ідентифікатор рядків (який часто є ідентифікатором, але не завжди). Чесно кажучи, це залежить від того, що ви хочете зробити, що визначає "найкращу" практику
Гаррет Ганг

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
Ласкаво просимо до переповнення стека! Хоча цей фрагмент коду вітається і може надати деяку допомогу, він би значно покращився, якби він включив пояснення того, як він вирішує питання. Без цього ваша відповідь має набагато меншу освітянську цінність - пам’ятайте, що ви відповідаєте на запитання читачів у майбутньому, а не лише про людину, яка зараз запитує! Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
Toby Speight

0

У деяких стовпцях MySQL є пункт "оновлення", див .:

mysql> SHOW COLUMNS FROM your_table_name;

Я не знаю, як це оновити, але опублікую редагування, коли я дізнаюся.


Якщо є "оновлення", це буде у стовпці "Додатково" таблиці, яку ви отримаєте під час виконання вищевказаної команди.
Jake_Howard
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.