PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wstawić do tabeli z innej tabeli, dopasowując wartości?

Możesz dołączyć do dodatkowych stołów w UPDATE oświadczenie, uwzględniając tę ​​preferowaną formę:

UPDATE books b
SET    author_id = a.author_id
FROM   authors a
WHERE  b.author = a.author_name;

Trzy powody:

  • To jest bezpieczniejsze. Twoje zapytanie zapisze wartość NULL w każdym wierszu, w którym nie znaleziono pasującego autora. Nie wydaje się to mieć znaczenia w Twoim przypadku, ale może potencjalnie prowadzić do utraty danych w podobnych zapytaniach, w których masz już dane w kolumnie do zaktualizowania.Moja alternatywa nic nie daje, jeśli nie zostanie znaleziony pasujący autor.

  • To jest szybsze. Powyższe za jeden. Ale także dlatego, że skorelowane podzapytania jak strasznie masz skalę. Łączenie w tabeli jest generalnie szybsze, zwłaszcza przy więcej niż kilku rzędach.

  • Jest czystszy i łatwiejszy do dostosowania do dodatkowych kolumn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze praktyki dotyczące rejestrowania audytu PostgreSQL

  2. Instalacja Postgisa:typ geometria nie istnieje

  3. Nowe funkcje zgodności z Oracle w PostgresPlus Advanced Server 9.3Beta

  4. Problemy z wydajnością wstawiania zbiorczego PostgreSQL/JooQ podczas ładowania z CSV; jak usprawnić proces?

  5. Jak określić ostatni dzień poprzedniego miesiąca za pomocą PostgreSQL?