sql >> Database teknologi >  >> RDS >> Database

Sådan opdaterer du en kolonne baseret på et filter af en anden kolonne

I dette selvstudie gennemgår vi de forskellige måder at opdatere rækker i en tabel ved hjælp af SQL, der går fra mere generelle opdateringer til mere specifikke metoder.

Fuld opdatering

Hvis hvert felt skal opdateres til den samme værdi, kan du gøre det ved at bruge en simpel UPDATE kommando.

UPDATE table
SET col = new_value;

Betinget opdatering

For at lave en betinget opdatering afhængigt af om den aktuelle værdi af en kolonne matcher betingelsen, kan du tilføje en WHERE klausul, der specificerer dette. Databasen vil først finde rækker, der matcher WHERE klausul og derefter kun udføre opdateringer på disse rækker.

UPDATE table
SET col = new_value
WHERE col = old_value;

For at udvide dette kan du tilføje hvad som helst til WHERE klausul du kan lide, så længe det er et gyldigt udtryk. Så for at udføre en opdatering baseret på værdien af ​​en anden kolonne i samme tabel, kan du udføre følgende:

UPDATE table
SET col = new_value
WHERE other_col = some_other_value;

Siden WHERE klausul kan indeholde ethvert gyldigt udtryk, du har også mulighed for at lave opdateringer, hvor flere kolonner opfylder kriterierne

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;

Som du kan se, kan du udvide WHERE klausul så meget som du vil for at filtrere rækkerne ned for at opdatere til det, du har brug for.

Hvad sker der nu, hvis du vil opdatere rækker i én tabel baseret på tilstanden for en anden tabel? Dette spørgsmål fører til et par forskellige måder, du kan gøre dette på.

Siden WHERE klausul kan indeholde et hvilket som helst gyldigt udtryk, du kan bruge en underforespørgsel:

UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);

Du kan også bruge en underforespørgsel i SET del af sætningen, hvis du vil indstille kolonnen til en værdi i en anden tabel

UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);

Måske er en nemmere måde at angive flere tabeller efter UPDATE klausul. Kun SET expression vil udføre opdateringer, men en liste over yderligere tabeller gør det muligt at inkludere tabellerne.

UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;

På samme måde som at udvide WHERE klausul, kan mængden af ​​tabeller udvides til at omfatte alle de tabeller, du har brug for, hvis du har flere tabeller, der skal samles på.


  1. MySQL JOIN med LIMIT 1 på sammenføjet bord

  2. Funktioner vs lagrede procedurer

  3. UUID-kollisionsrisiko ved hjælp af forskellige algoritmer

  4. 7 gratis værktøjer til databasediagram for travle datafolk