Database
 sql >> Baza danych >  >> RDS >> Database

Jak zaktualizować kolumnę na podstawie innej kolumny w SQL?

Czasami może być konieczne zaktualizowanie kolumny w tabeli na podstawie wartości innej kolumny w tabeli. Oto jak zaktualizować kolumnę na podstawie innej kolumny w SQL Server, MySQL, PostgreSQL.


Jak zaktualizować kolumnę na podstawie innej kolumny w SQL

Oto kroki, aby zaktualizować kolumnę na podstawie innej kolumny w SQL.

Załóżmy, że masz następującą tabelę pracownicy(id, imię, nazwisko)

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       |
+------+------------+-----------+

Istnieją dwa sposoby aktualizacji kolumny na podstawie wartości innej kolumny – za pomocą klauzuli WHERE i za pomocą instrukcji CASE.


Aktualizuj kolumnę na podstawie innej kolumny przy użyciu klauzuli WHERE

Oto zapytanie SQL, aby zaktualizować imię kolumna oparta na wartości kolumn id przy użyciu klauzuli WHERE.

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       |
+------+------------+-----------+

W powyższej instrukcji instrukcja UPDATE najpierw wybierze wiersze zgodne z klauzulą ​​WHERE i zaktualizuje wartość naszej kolumny first_name

Możesz również użyć operatorów logicznych, takich jak AND/OR w klauzuli WHERE, jak pokazano poniżej.

mysql> update employees
       set first_name='Tim'
       where id=1 or id=3;

Możesz również użyć operatora IN w klauzuli WHERE, jak pokazano poniżej.

mysql> update employees
       set first_name='Tim'
       where id in (1,3);

Możesz również użyć innego zapytania SELECT w klauzuli WHERE, jak pokazano poniżej.

mysql> update employees
       set first_name='Tim'
       where id in ( select id from emp2 );

W takim przypadku wszystkie wiersze, których wartość id pasuje do jednej z wartości zwracanych przez zapytanie SELECT, zostaną zaktualizowane.


Aktualizuj kolumnę na podstawie innej kolumny za pomocą instrukcji CASE

Oto zapytanie SQL, aby zaktualizować imię kolumna na podstawie wartości id kolumna za pomocą instrukcji CASE.

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       |
+------+------------+-----------+

Używamy instrukcji CASE, aby określić nową wartość first_name kolumna dla każdej wartości id kolumna. Jest to znacznie lepsze podejście niż użycie klauzuli WHERE, ponieważ za pomocą klauzuli WHERE możemy zmienić wartość kolumny tylko na jedną nową wartość. Za pomocą instrukcji CASE możemy zaktualizować wartość naszej kolumny do różnych wartości, w zależności od indywidualnych wartości kolumny id.

Przeczytaj także:Jak naprawić nieprawidłową wartość ciągu w MySQL


Aktualizuj kolumnę na podstawie innej tabeli

Możesz także zaktualizować kolumnę w jednej tabeli z innej kolumny w innej tabeli. Powiedzmy, że masz też inną tabelę emp2(id, name_name, last_name) i chcesz zaktualizować imię w pracownikach tabela na imię w emp2 stół. Obie tabele mają również ten sam id wartości kolumn.

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      |
+------+------------+-----------+

Przeczytaj także:Najlepsze blogi MySQL dla administratorów baz danych

W takim przypadku możesz użyć następującej składni instrukcji UPDATE, aby zaktualizować kolumnę z jednej tabeli na podstawie wartości innej tabeli.

UPDATE first_table, second_table 
SET first_table.column1 = second_table.column2 
WHERE first_table.id = second_table.table_id;

Oto zapytanie SQL do zaktualizowania imię kolumna w pracownikach tabela na imię kolumna w emp2 tabela.

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 ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić nazwę kolumny w SQL?

  2. Grupowanie danych o dacie i godzinie

  3. Treść nieustrukturyzowana:niewykorzystane źródło paliwa dla sztucznej inteligencji i uczenia maszynowego

  4. Podzbiór bazy danych – jak to zrobić w IRI Voracity

  5. Relacyjne vs nierelacyjne bazy danych – część 2