Zmień dane jednej komórki w mysql


156

Jak mogę zmienić dane tylko w jednej komórce tabeli mysql. Mam problem z UPDATE, ponieważ powoduje zmianę wszystkich parametrów w kolumnie, ale chcę zmienić tylko jeden. W jaki sposób?


Czego spróbowałeś do tej pory? Czy możesz udostępnić zapytanie, którego używasz? Zwykle nie aktualizujesz „wszystkich parametrów w kolumnie”
Nico Haase

Odpowiedzi:


191

Prawdopodobnie musisz określić, które wiersze chcesz zaktualizować ...

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

1
Byłem zdezorientowany tą odpowiedzią, myśląc, że SET wybrane wiersze do zmiany i GDZIE je zmieniłem.
Keith

czy warunek w GDZIE to kolumna1 = stara_wartość?
weefwefwqg3

@ weefwefwqg3, tak, może, ale nie ma to sensu. Jeśli nie zmieniasz wartości, po prostu pozostaw ją poza częścią SET.
Brian Hooper

1
@Brian Hooper: Muszę zmienić wartość, mam na myśli pytanie, czy mogę to zrobić: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3

2
@ weefwefwqg3, Ah, widzę, przepraszam, atak krótkowzroczności. Tak, to byłoby w porządku.
Brian Hooper

112

Moja odpowiedź to powtórzenie tego, co inni powiedzieli wcześniej, ale pomyślałem, że dodam przykład, używając MySQLtylko dlatego, że poprzednie odpowiedzi były dla mnie trochę tajemnicze.

Ogólna postać polecenia, którego należy użyć do zaktualizowania kolumny w jednym wierszu:

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

A oto przykład.

PRZED

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

DOKONYWANIE ZMIANY

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

PO

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

Dzięki za tę demonstrację. Powyższe zapytanie zaktualizuje wszystkie wystąpienia CDRECORD w Twojej kolumnie aet. Jednak aktualizując konkretną komórkę w określonej kolumnie, lepiej to zrobić na podstawie identyfikatora kolumny, tj. Gdzie ID = xx
Mohammed

Zwykle najlepiej jest używać klucza podstawowego wierszy, unikalnego identyfikatora wierszy (który często jest identyfikatorem, ale nie zawsze). Szczerze mówiąc, to zależy od tego, co chcesz zrobić, co definiuje „najlepszą” praktykę
Garret Gang

30

UPDATE zmieni tylko kolumny, które wymienisz.

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

Te WHERElimity klauzula które wiersze są aktualizowane. Zwykle używa się tego do zidentyfikowania wartości klucza podstawowego (lub identyfikatora) tabeli, tak aby aktualizować tylko jeden wiersz.

SETKlauzula mówi MySQL, które kolumny do aktualizacji. Możesz podać dowolną liczbę lub kilka kolumn. Wszystko, czego nie wymienisz , nie zostanie zaktualizowane.


11

UPDATE zmienia tylko określone wartości:

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

9

Spróbuj wykonać następujące czynności:

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

Dodaj wyjaśnienie do swojej odpowiedzi, tak aby inni mogli się z niej nauczyć - do czego to @parameterName służy?
Nico Haase

7

AKTUALIZUJ TABELĘ <tablename> ZESTAW <COLUMN=VALUE> GDZIE <CONDITION>

Przykład:

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

3

Spróbuj tego.

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

1
Witamy w Stack Overflow! Chociaż ten fragment kodu jest mile widziany i może zapewnić pomoc, byłby znacznie ulepszony, gdyby zawierał wyjaśnienie, w jaki sposób odpowiada na pytanie. Bez tego Twoja odpowiedź ma znacznie mniejszą wartość edukacyjną - pamiętaj, że w przyszłości odpowiadasz na pytanie do czytelników, a nie tylko osoby, która pyta teraz! Proszę edytować swoje odpowiedzi, aby dodać wyjaśnienie, i dać wskazówkę co zastosować ograniczenia i założenia.
Toby Speight

0

Niektóre kolumny w MySQL mają klauzulę „on update”, zobacz:

mysql> SHOW COLUMNS FROM your_table_name;

Nie jestem pewien, jak to zaktualizować, ale opublikuję zmianę, gdy się dowiem.


Jeśli jest "przy aktualizacji", będzie to w kolumnie "Extra" tabeli, którą otrzymasz wykonując powyższe polecenie.
Jake_Howard
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.