2011-06-28 19 views
43

Prosty mySql pytanie dla was wszystkich ekspertów:Aktualizacja kolumna mysql

Mam tabeli table1 z trzech kolumn i kilka wierszy:

[key_col|col_a|col_b] 

Chcę zaktualizować col_a ze zbioru wartości (tzn. pozostawiając col_b bez zmian), coś takiego:

INSERT INTO table1 AS t1 (key_col, col_a) VALUES ("k1", "foo"), ("k2", "bar"); 

Nie działa, jak to zrobić?

+1

** ZAKTUALIZUJ ** odpowiedź na to, czego szukałem http://stackoverflow.com/questions/3432/multiple-updates-in-mysql – Muleskinner

+0

Proszę wybrać zaakceptowaną odpowiedź na to pytanie. Jeśli stwierdzisz, że inne pytanie pomogło, utwórz odpowiedź na ten wpis, podając szczegóły swojego sukcesu. – onebree

+0

'UPDATE table1 SET col_a = 'new' WHERE key_col = 'key';' –

Odpowiedz

73

Musisz użyć UPDATE zamiast wpisać:

na przykład:

UPDATE table1 SET col_a='k1', col_b='foo' WHERE key_col='1'; 
UPDATE table1 SET col_a='k2', col_b='bar' WHERE key_col='2'; 
+0

, więc mówisz, że muszę napisać jedno zapytanie o aktualizację dla każdego wiersza, który chcę zaktualizować? – Muleskinner

+0

Możesz przechować wszystkie aktualizacje – NAVEED

+0

Przeczytaj ten artykuł, aby zaktualizować wiele wierszy: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows- with-different-values-and-aa- single-sql-query/ – NAVEED

0

Jeśli chcesz zaktualizować dane należy użyć polecenia UPDATE zamiast z INSERT

4
UPDATE table1 SET col_a = 'newvalue' 

Dodaj warunek WHERE, jeśli chcesz zaktualizować tylko niektóre wiersze.

+0

można podać przykład, w którym mnożone wiersze są aktualizowane w tym samym zapytaniu – Muleskinner

+1

To zaktualizuje wszystkie wiersze. Użyj miejsca, gdzie ograniczyć to do mniejszej liczby wierszy. –

0

jeśli chcesz wypełnić wszystkie kolumny:

update 'column' set 'info' where keyID!=0; 
0

To co zrobiłem dla aktualizacji zbiorczej:

UPDATE tableName SET isDeleted = 1 where columnName in ('430903GW4j683537882','430903GW4j667075431','430903GW4j658444015') 

Nadzieja to pomogło ci.