Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL i Upload danych (różne wartości dla różnych id w jednej kolumnie)
Forum PHP.pl > Forum > Bazy danych > MySQL
michaf1994
Mam tabelę:

ID | POLE
---------
1 | 2546
2 | 5461
3 | 3120

I chciałbym żeby dla konkretnych id pole przyjęło inną (zdefiniowaną w tablicy php) wartość. Czy można to zrobić jednym zapytaniem, czy dla każdego id musi być inne zapytanie?
by_ikar
Raczej nie wykonasz tego w jednym zapytaniu, jeżeli chcesz różne wartości to niestety musi być to wiele zapytań.
pedro84
A właśnie, że na upartego się da - zwykły INSERT + ON DUPLICATE:
  1. INSERT INTO TABLE (id, something, something_else)VALUES (1, 1,1), (2,2,3), (3,9,3), (4,10,12)
  2. ON DUPLICATE KEY UPDATE something = VALUES(something), something_else = VALUES(something_else);
michaf1994
Chodzi mi tu raczej o UPDATE coś jak o ile to możliwe połączenie kilku zapytań.

(`pole`='{$dane[1]}' WHERE `id`='1') AND (`pole`='{$dane[23]}' WHERE `id`='23')

Czy to jest wykonalne w jednym zapytaniu?
pedro84
Coś w ten deseń, czy źle coś przez ten upał łapię?
  1. UPDATE my_table
  2. SET FIELD = CASE
  3. WHEN id IN (/* true ids */) THEN TRUE
  4. WHEN id IN (/* false ids */) THEN FALSE
  5. ELSE FIELD=FIELD
  6. END
michaf1994
już prawie. w tablicy $dane będą różne liczby i z php muszę je przenieść do bazy przez Upload. Może napiszę bardziej obrazowo:

mam liste userów i chcę dla każdego inną wartość (wybraną przeze mnie) wpisać w to pole. Robiąc kilka zapytan wyglądałoby to tak:

  1. UPDATE Persons SET Age=36 WHERE id=1
  2. UPDATE Persons SET Age=30 WHERE id=5
  3. UPDATE Persons SET Age=24 WHERE id=11
  4. ...
  5. UPDATE Persons SET Age=3 WHERE id=54


i chcę to połączyć. żeby było w jednym zapytaniu.
Pyton_000
No to
  1. INSERT INTO Person (id, Age) VALUES (1,36),(5,11) ON DUPLICATE KEY UPDATE Age=VALUES(age)
michaf1994
Ok. Działa. Dzięki.

Mam jeszcze jedno pytanie związane z tym: Jakbym chciał żeby MySQL wykonał coś takiego, ale w wersji, że nie wpisuje podaną wartość, tylko dodaje ją do obecnej. Jest to wykonalne?
Pyton_000
  1. INSERT INTO Person (id, Age) VALUES (1,36),(5,11) ON DUPLICATE KEY UPDATE Age=Age+VALUES(Age)

Jakoś tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.