UPDATE med FROM og JOIN-lignende oppdateringer
Oppdater rader med verdier fra en annen tabell ved hjelp av UPDATE ... FROM (PostgreSQL) og standardsetningen MERGE.
UPDATE med FROM og JOIN-lignende oppdateringer er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Grunnleggende UPDATE
Endre verdier i rader som samsvarer:
UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;Flere kolonner
En kommaseparert SET-liste:
UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;Oppdatering av mange rader
Treff ganske enkelt flere rader med WHERE:
UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';UPDATE med underforespørsel
Beregn den nye verdien fra en annen spørring:
UPDATE products
SET review_count = (
SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);UPDATE … FROM (PostgreSQL)
Oppdatering i JOIN-stil – hent verdier fra en annen tabell:
UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;UPDATE … FROM med flere tabeller
FROM-listen kan inneholde 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 korrelert underforespørsel
Portabel ekvivalent (langsommere):
UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);MERGE for INSERT/UPDATE/DELETE
PostgreSQL 15+ støtter MERGE for kombinerte operasjoner – se leksjonen om UPSERT.
RETURNING fra UPDATE
Hent de oppdaterte radene i én rundtur:
UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;Oppdatering med CASE
Betingede nye verdier:
UPDATE orders
SET status = CASE
WHEN paid_at IS NOT NULL THEN 'paid'
WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
ELSE status
END;Pass på manglende WHERE
UPDATE users SET active = false; oppdaterer ALLE rader. I produksjon:
- Kjør en SELECT først for å kontrollere antallet rader
- Pakk operasjonen inn i en transaksjon, og kontroller resultatet før COMMIT
- Bruk
BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;som en prøvekjøring
UPDATE-ytelse
En UPDATE oppretter en ny radversjon og markerer den gamle som død (MVCC). Tabeller med hyppige oppdateringer kan bli oppblåste – dette dekkes i leksjonen om VACUUM/MVCC.
Oppsummering
UPDATE … FROM er oppdateringen i JOIN-stil som gjør masseendringer ryddige.
- WHERE alltid – glem det aldri
- Bruk RETURNING for å kontrollere resultatet
- Test i en transaksjon med ROLLBACK
Hurtigsjekk
Hvilken UPDATE-syntaks lar deg referere til en annen tabell i PostgreSQL?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «UPDATE med FROM og JOIN-lignende oppdateringer» gratis?
Ja – hele teksten i «UPDATE med FROM og JOIN-lignende oppdateringer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «UPDATE med FROM og JOIN-lignende oppdateringer»?
Oppdater rader med verdier fra en annen tabell ved hjelp av UPDATE ... FROM (PostgreSQL) og standardsetningen MERGE. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «UPDATE med FROM og JOIN-lignende oppdateringer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- INSERT med flere rader
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE med FROM og JOIN-lignende oppdateringer
- DELETE med USING og trygge mønstre