postgres update delete - ghdrako/doc_snipets GitHub Wiki
Są dwa sposoby modyfikacji danych w tabeli za pomocą wartości pobranych z innej tabeli. Pierwszy z
nich to podzapytanie w klauzuli SET
UPDATE pracownicy
SET imie = (select imie from pracownicy where nazwisko = 'Nowak')
WHERE nazwisko = 'Kowalski';
Drugi sposób to użycie klauzuli FROM
UPDATE pracownicy
SET imie = p.imie
FROM pracownicy p
WHERE pracownicy.nazwisko = 'Kowalski'
AND p.nazwisko = 'Nowak';
Opcjonalna klauzula RETURNING
pozwala na zwrócenie poszczególnych kolumn lub całych rekordów
które zostały zmodyfikowane
UPDATE pracownicy
SET imie = p.imie
FROM pracownicy p
WHERE pracownicy.nazwisko = 'Kowalski'
AND p.nazwisko = 'Nowak'
RETURNING *;
Jak w przypadku polecenia UPDATE są dwa/trzy sposoby na usuwanie danych w jednej tabeli z użyciem
wartości w drugiej tabeli - użycie podzapytania w klauzuli WHERE
lub użycie opcjonalnej klauzuli
USING
.
DELETE FROM xxx WHERE id IN (SELECT id FROM yyy);
DELETE FROM xxx WHERE EXISTS (SELECT id FROM yyy WHERE xxx.id=yyy.id);
DELETE FROM xxx USING yyy WHERE xxx.id = yyy.id;
DELETE FROM pracownicy
USING place
WHERE place.stanowisko = pracownicy.stanowisko
AND place.stawka < 4.5
RETURNING *;