UPDATE FROM- ja JOIN-tyylisillä päivityksillä
Päivittäkää rivejä toisen taulun arvojen avulla rakenteella UPDATE ... FROM (PostgreSQL) ja standardin MERGE-lauseen avulla.
UPDATE FROM- ja JOIN-tyylisillä päivityksillä on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Perusmuotoinen UPDATE
Muuta täsmäävien rivien arvoja:
UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;Useita sarakkeita
Pilkuilla eroteltu SET-luettelo:
UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;Useiden rivien päivittäminen
Kohdista päivitys yksinkertaisesti useampiin riveihin WHERE-ehdolla:
UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';UPDATE alikyselyn kanssa
Laske uusi arvo toisesta kyselystä:
UPDATE products
SET review_count = (
SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);UPDATE … FROM (PostgreSQL)
JOIN-tyylinen päivitys — hae arvoja toisesta taulusta:
UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;UPDATE … FROM useiden taulujen kanssa
FROM-luettelo voi sisältää useita tauluja:
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;Standardi-SQL: UPDATE … FROM korreloivalla alikyselyllä
Siirrettävä vaihtoehto (hitaampi):
UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);MERGE INSERT-, UPDATE- ja DELETE-toimintoihin
PostgreSQL 15+ tukee MERGE-komentoa yhdistettyihin toimintoihin — katso UPSERT-oppitunti.
RETURNING UPDATE-komennosta
Hae päivitetyt rivit yhdellä edestakaisella pyynnöllä:
UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;Päivittäminen CASE-lausekkeella
Ehdolliset uudet arvot:
UPDATE orders
SET status = CASE
WHEN paid_at IS NOT NULL THEN 'paid'
WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
ELSE status
END;Varokaa puuttuvaa WHERE-ehtoa
UPDATE users SET active = false; päivittää JOKAISEN rivin. Tuotannossa:
- Suorittakaa ensin SELECT ja tarkistakaa rivimäärä
- Käärikää toiminto transaktioon ja tarkistakaa tulos ennen COMMIT-komentoa
- Käyttäkää
BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;-lauseketta koeajona
Päivityksen suorituskyky
UPDATE luo uuden riviversion ja merkitsee vanhan rivin kuolleeksi (MVCC). Usein päivitettävät taulut voivat paisua — tätä käsitellään VACUUM- ja MVCC-oppitunnissa.
Kertaus
UPDATE … FROM on JOIN-tyylinen päivitys, joka tekee joukkokorjauksista selkeitä.
- Käyttäkää WHERE-ehtoa aina — älkää koskaan unohtako sitä
- Käyttäkää RETURNING-lauseketta tarkistamiseen
- Testatkaa transaktiossa ja käyttäkää ROLLBACK-komentoa
Pikatarkistus
Millä UPDATE-syntaksilla voitte viitata toiseen tauluun PostgreSQL:ssä?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä” ilmainen?
Kyllä – oppitunnin ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä”?
Päivittäkää rivejä toisen taulun arvojen avulla rakenteella UPDATE ... FROM (PostgreSQL) ja standardin MERGE-lauseen avulla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- INSERT useille riveille
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE FROM- ja JOIN-tyylisillä päivityksillä
- DELETE USING-lauseella ja turvalliset käytännöt