Manchmal müssen Sie möglicherweise eine Spalte in der Tabelle basierend auf dem Wert einer anderen Spalte in der Tabelle aktualisieren. So aktualisieren Sie eine Spalte basierend auf einer anderen Spalte in SQL Server, MySQL, PostgreSQL.
So aktualisieren Sie eine Spalte basierend auf einer anderen Spalte in SQL
Hier sind die Schritte zum Aktualisieren einer Spalte basierend auf einer anderen Spalte in SQL.
Angenommen, Sie haben die folgende Tabelle employees(id, first_name, last_name)
mysql> create table employees(id int, first_name varchar(255), last_name varchar(255)); mysql> insert into employees(id, first_name, last_name) values(1,'John','Doe'), (2,'Jane','Doe'); mysql> select * from employees; +------+------------+-----------+ | id | first_name | last_name | +------+------------+-----------+ | 1 | John | Doe | | 2 | Jane | Doe | +------+------------+-----------+
Es gibt zwei Möglichkeiten, eine Spalte basierend auf dem Wert einer anderen Spalte zu aktualisieren – mit der WHERE-Klausel und mit der CASE-Anweisung.
Spalte basierend auf einer anderen Spalte mit WHERE-Klausel aktualisieren
Hier ist die SQL-Abfrage zum Aktualisieren von first_name Spalte basierend auf dem Wert der ID-Spalten unter Verwendung der WHERE-Klausel.
mysql> update employees set first_name='Tim' where id=1; mysql> select * from employees; +------+------------+-----------+ | id | first_name | last_name | +------+------------+-----------+ | 1 | Tim | Doe | | 2 | Jane | Doe | +------+------------+-----------+
In der obigen Anweisung wählt die UPDATE-Anweisung zuerst Zeilen aus, die mit der WHERE-Klausel übereinstimmen, und aktualisiert den Wert unserer Spalte first_name
Sie können auch logische Operatoren wie AND/OR in Ihrer WHERE-Klausel verwenden, wie unten gezeigt.
Mitarbeiter vonmysql> update employees set first_name='Tim' where id=1 or id=3;
Sie können auch einen IN-Operator in der WHERE-Klausel verwenden, wie unten gezeigt.
mysql> update employees set first_name='Tim' where id in (1,3);
Sie können auch eine andere SELECT-Abfrage in Ihrer WHERE-Klausel verwenden, wie unten gezeigt.
mysql> update employees set first_name='Tim' where id in ( select id from emp2 );
In diesem Fall werden alle Zeilen aktualisiert, deren ID-Wert mit einem der von der SELECT-Abfrage zurückgegebenen Werte übereinstimmt.
Spalte basierend auf einer anderen Spalte mit CASE-Anweisung aktualisieren
Hier ist die SQL-Abfrage zum Aktualisieren von first_name Spalte basierend auf dem Wert von id Spalte mit CASE-Anweisung.
mysql> update employees set first_name = (CASE WHEN id = 1 THEN 'Tim' WHEN id = 2 THEN 'Dave' END); mysql> select * from employees; +------+------------+-----------+ | id | first_name | last_name | +------+------------+-----------+ | 1 | Tim | Doe | | 2 | Dave | Doe | +------+------------+-----------+
Wir verwenden eine CASE-Anweisung, um den neuen Wert von first_name anzugeben Spalte für jeden Wert von id Säule. Dies ist ein viel besserer Ansatz als die Verwendung der WHERE-Klausel, da wir mit der WHERE-Klausel nur einen Spaltenwert in einen neuen Wert ändern können. Mit der CASE-Anweisung können wir unseren Spaltenwert auf verschiedene Werte aktualisieren, abhängig von den einzelnen Werten der ID-Spalte.
Lesen Sie auch:So beheben Sie einen falschen Zeichenfolgenwert in MySQL
Spalte basierend auf einer anderen Tabelle aktualisieren
Sie können auch eine Spalte in einer Tabelle aus einer anderen Spalte in einer anderen Tabelle aktualisieren. Nehmen wir an, Sie haben auch eine andere Tabelle emp2(id, first_name, last_name) und Sie first_name aktualisieren möchten bei Mitarbeitern Tabelle zu Vorname in emp2 Tisch. Beide Tabellen haben auch dieselbe id Spaltenwerte.
mysql> create table emp2(id int, first_name varchar(255), last_name varchar(255)); mysql> insert into emp2(id, first_name, last_name) values(1,'Don','Stone'), (2,'Jim','Stew'); mysql> select * from emp2; +------+------------+-----------+ | id | first_name | last_name | +------+------------+-----------+ | 1 | Don | Stone | | 2 | Jim | Stew | +------+------------+-----------+
Lesen Sie auch:Die besten MySQL-Blogs für Datenbankadministratoren
In einem solchen Fall können Sie die folgende UPDATE-Anweisungssyntax verwenden, um die Spalte aus einer Tabelle basierend auf dem Wert einer anderen Tabelle zu aktualisieren.
UPDATE first_table, second_table
SET first_table.column1 = second_table.column2
WHERE first_table.id = second_table.table_id;
Hier ist eine SQL-Abfrage zum Aktualisieren von first_name Spalte in Mitarbeiter Tabelle zu Vorname Spalte in emp2 Tabelle.
mysql> UPDATE employees, emp2 SET employees.first_name = emp2.first_name WHERE employees.id = emp2.id; mysql> select * from employees; +------+------------+-----------+ | id | first_name | last_name | +------+------------+-----------+ | 1 | Don | Doe | | 2 | Jim | Doe | +------+------------+-----------+
Ubiq macht es einfach, Daten zu visualisieren und sie in Echtzeit-Dashboards zu überwachen. Testen Sie Ubiq kostenlos.