Mam wiele wierszy, które muszę zaktualizować i wstawić nazwy klientów. Jak mogę to zrobić w jednym zapytaniu, w przeciwieństwie do wielokrotnego uruchamiania poniższego zapytania z różnymi nazwami?
UPDATE orders
SET cust_name = "Sue"
WHERE p_id = 6
Odpowiedzi:
3 dla odpowiedzi № 1Możesz użyć czegoś takiego
UPDATE mytable
SET myfield = CASE other_field
WHEN 1 THEN "value"
WHEN 2 THEN "value"
WHEN 3 THEN "value"
END
WHERE id IN (1,2,3)
Aby uzyskać więcej informacji, sprawdź Zaktualizuj wiele wierszy o różnych wartościach i pojedynczym zapytaniu SQL
0 dla odpowiedzi nr 2
Zasadniczo nie można „t. MySQL, DB2, SQL Server i PostgreSQL nie obsługiwać zapytań, w których różne klauzule WHERE mają zastosowanie do różnych klauzul SET.
Ty też nie musisz. Zwykle można użyć przygotowanej instrukcji z symbolami zastępczymi dla zmiennych, które wykonuje się z listą krotek parametrów. W zależności od języka, adaptera bazy danych i bazy danych może to być wykonane w trybie „wsadowym”, co jest dość wydajne.
Większa precyzja wymaga więcej informacji na temat używanego języka, bazy danych i adaptera bazy danych.