SQL Academy · Lektion

UPDATE med FROM og JOIN-lignende opdateringer

Opdatér rækker med værdier fra en anden tabel ved hjælp af UPDATE ... FROM (PostgreSQL) og standard-sætningen MERGE.

Lektion 3 af 414 trin

UPDATE med FROM og JOIN-lignende opdateringer er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.

Grundlæggende UPDATE

Skift værdier i de rækker, der matcher:

UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;

Flere kolonner

En kommasepareret SET-liste:

UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;

Opdatering af mange rækker

Find blot flere rækker med WHERE:

UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';

UPDATE med underforespørgsel

Beregn den nye værdi ud fra en anden forespørgsel:

UPDATE products
SET review_count = (
  SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);

UPDATE … FROM (PostgreSQL)

JOIN-lignende opdatering — hent værdier fra en anden tabel:

UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;

UPDATE … FROM med flere tabeller

FROM-listen kan indeholde flere tabeller:

UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;

Standard-SQL: UPDATE … FROM via korreleret underforespørgsel

Portabel ækvivalent (langsommere):

UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);

MERGE til INSERT/UPDATE/DELETE

PostgreSQL 15+ understøtter MERGE til kombinerede handlinger — se lektionen om UPSERT.

RETURNING fra UPDATE

Hent de opdaterede rækker tilbage i én tur frem og tilbage:

UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;

Opdatering med CASE

Betingede nye værdier:

UPDATE orders
SET status = CASE
  WHEN paid_at IS NOT NULL THEN 'paid'
  WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
  ELSE status
END;

Pas på manglende WHERE

UPDATE users SET active = false; opdaterer ALLE rækker. I produktion:

  • Kør en SELECT først for at kontrollere antallet af rækker
  • Pak det ind i en transaktion, og kontrollér resultatet før COMMIT
  • Brug BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK; som en prøvekørsel

Opdateringsydeevne

En UPDATE opretter en ny rækkeversion og markerer den gamle som død (MVCC). Tabeller med hyppige opdateringer kan svulme op — det gennemgås i lektionen om VACUUM/MVCC.

Opsummering

UPDATE … FROM er den JOIN-lignende opdatering, der gør masseændringer overskuelige.

  • Brug altid WHERE — glem det aldrig
  • Brug RETURNING til at kontrollere resultatet
  • Test i en transaktion med ROLLBACK

Hurtigt tjek

Hvilken UPDATE-syntaks lader dig referere til en anden tabel i PostgreSQL?

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
46
Lektioner
183

Ofte stillede spørgsmål

Er lektionen “UPDATE med FROM og JOIN-lignende opdateringer” gratis?

Ja — hele teksten til “UPDATE med FROM og JOIN-lignende opdateringer” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “UPDATE med FROM og JOIN-lignende opdateringer”?

Opdatér rækker med værdier fra en anden tabel ved hjælp af UPDATE ... FROM (PostgreSQL) og standard-sætningen MERGE. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på SQL Academy?

Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “UPDATE med FROM og JOIN-lignende opdateringer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne SQL Academy-lektion?

Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. INSERT med flere rækker
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE med FROM og JOIN-lignende opdateringer
  4. DELETE med USING og sikre mønstre
← Tilbage til SQL Academy