In deze zelfstudie bespreken we de verschillende manieren om rijen in een tabel bij te werken met behulp van SQL, van meer algemene updates naar meer specifieke methoden.
Volledige update
Als elk veld moet worden bijgewerkt naar dezelfde waarde, kunt u dat doen met een eenvoudige UPDATE
commando.
UPDATE table
SET col = new_value;
Voorwaardelijke update
Om een voorwaardelijke update uit te voeren, afhankelijk van of de huidige waarde van een kolom overeenkomt met de voorwaarde, kunt u een WHERE
toevoegen clausule die dit specificeert. De database zal eerst rijen vinden die overeenkomen met de WHERE
clausule en voer dan alleen updates uit op die rijen.
UPDATE table
SET col = new_value
WHERE col = old_value;
Om dit uit te breiden, kun je alles toevoegen aan de WHERE
clausule die u leuk vindt, zolang het maar een geldige uitdrukking is. Dus om een update uit te voeren op basis van de waarde van een andere kolom in dezelfde tabel, kunt u het volgende uitvoeren:
UPDATE table
SET col = new_value
WHERE other_col = some_other_value;
Sinds de WHERE
clausule kan elke geldige uitdrukking bevatten, je hebt ook de mogelijkheid om updates uit te voeren waar meerdere kolommen aan de criteria voldoen
UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;
UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;
Zoals je kunt zien, kun je de WHERE
. uitvouwen clausule zo veel als je wilt om de rijen te filteren voor het bijwerken naar wat je nodig hebt.
Wat gebeurt er nu als u rijen in de ene tabel wilt bijwerken op basis van de toestand van een andere tabel? Deze vraag leidt tot een aantal verschillende manieren waarop u dit kunt doen.
Sinds de WHERE
clausule kan elke geldige uitdrukking bevatten, u zou een subquery kunnen gebruiken:
UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);
U kunt ook een subquery gebruiken in de SET
gedeelte van de instructie als u de kolom wilt instellen op een waarde in een andere tabel
UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);
Misschien is een gemakkelijkere manier om meerdere tabellen op te geven na de UPDATE
clausule. Alleen de SET
expression zal updates uitvoeren, maar door extra tabellen te vermelden, kunnen de tabellen worden opgenomen.
UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;
Net als bij het uitbreiden van de WHERE
clausule, kan het aantal tafels worden uitgebreid om alle tafels op te nemen die je nodig hebt als je meerdere tafels hebt waaraan je moet deelnemen.