sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu vložit do tabulky z jiné tabulky porovnáním hodnot?

Další tabulky můžete připojit v UPDATE prohlášení, které umožňuje tuto preferovanou formu:

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

Tři důvody:

  • Je to bezpečnější. Váš dotaz zapíše hodnotu NULL do každého řádku, kde není nalezen žádný odpovídající autor. To ve vašem případě není důležité, ale může to potenciálně vést ke ztrátě dat u podobných dotazů, kde již máte data ve sloupci, která mají být aktualizována. Moje alternativa nedělá nic, pokud není nalezen žádný odpovídající autor.

  • Je to rychlejší. Výše uvedené pro jednoho. Ale také proto, že korelované poddotazy jako že máš strašně měřítko. Připojování k tabulce je obecně rychlejší, zvláště s více než několika řádky.

  • Je čistší a snadněji se přizpůsobí dalším sloupcům.



  1. KILL MySQL dotazy pomocí PHP, pokud uživatel zavře prohlížeč nebo přejde z jedné stránky na druhou

  2. Oracle sloučí konstanty do jedné tabulky

  3. Jak požádat MySQL, aby požadovala hodnoty v dotazu?

  4. Jak optimalizovat ORDER BY pro vypočítaný sloupec v MASSIVE MySQL tabulce