Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Memperbarui Kolom Berdasarkan Kolom Lain di SQL

Terkadang Anda mungkin perlu memperbarui kolom dalam tabel berdasarkan nilai kolom lain dalam tabel. Berikut adalah cara memperbarui kolom berdasarkan kolom lain di SQL Server, MySQL, PostgreSQL.


Cara Memperbarui Kolom Berdasarkan Kolom Lain di SQL

Berikut adalah langkah-langkah untuk memperbarui kolom berdasarkan kolom lain di SQL.

Katakanlah Anda memiliki tabel berikut karyawan(id, nama_depan, nama_belakang)

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

Ada dua cara untuk memperbarui kolom berdasarkan nilai kolom lain – menggunakan klausa WHERE dan menggunakan pernyataan CASE.


Perbarui kolom berdasarkan kolom lain menggunakan klausa WHERE

Berikut kueri SQL untuk memperbarui first_name kolom berdasarkan nilai kolom id menggunakan klausa 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       |
+------+------------+-----------+

Dalam pernyataan di atas, pernyataan UPDATE pertama-tama akan memilih baris yang cocok dengan klausa WHERE dan memperbarui nilai kolom kami first_name

Anda juga dapat menggunakan operator logika seperti AND/OR dalam klausa WHERE seperti yang ditunjukkan di bawah ini.

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

Anda juga dapat menggunakan operator IN pada klausa WHERE seperti yang ditunjukkan di bawah ini.

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

Anda juga dapat menggunakan kueri SELECT lain di klausa WHERE Anda seperti yang ditunjukkan di bawah ini.

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

Dalam hal ini, semua baris yang nilai idnya cocok dengan salah satu nilai yang dikembalikan oleh kueri SELECT, akan diperbarui.


Perbarui kolom berdasarkan kolom lain menggunakan pernyataan CASE

Berikut kueri SQL untuk memperbarui first_name kolom berdasarkan nilai id kolom menggunakan pernyataan 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       |
+------+------------+-----------+

Kami menggunakan pernyataan CASE untuk menentukan nilai baru first_name kolom untuk setiap nilai id kolom. Ini adalah pendekatan yang jauh lebih baik daripada menggunakan klausa WHERE karena dengan klausa WHERE kita hanya dapat mengubah nilai kolom menjadi satu nilai baru. Dengan pernyataan CASE, kita dapat memperbarui nilai kolom ke berbagai nilai, tergantung pada nilai individual kolom id.

Baca Juga :Cara Memperbaiki Nilai String yang Salah di MySQL


Perbarui Kolom Berdasarkan Tabel Lain

Anda juga dapat memperbarui kolom dalam satu tabel dari kolom lain di tabel yang berbeda. Katakanlah Anda juga memiliki tabel lain emp2(id, first_name, last_name) dan Anda ingin memperbarui first_name di karyawan tabel ke nama_depan di emp2 meja. Kedua tabel juga memiliki id yang sama nilai kolom.

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

Baca Juga :Blog MySQL Teratas untuk Administrator Basis Data

Dalam kasus seperti itu, Anda dapat menggunakan sintaks pernyataan UPDATE berikut untuk memperbarui kolom dari satu tabel, berdasarkan nilai tabel lain.

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

Berikut adalah kueri SQL untuk memperbarui first_name kolom di karyawan tabel ke nama_depan kolom di emp2 tabel.

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 memudahkan untuk memvisualisasikan data, dan memantaunya di dasbor waktu nyata. Coba Ubiq gratis.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gabung Alami SQL

  2. 11 Pernyataan SQL Umum dengan Contoh Dasar

  3. Mengapa Statistik Tunggu Saja Tidak Cukup

  4. Tugas Postgres Umum di CentOS 7

  5. Kasus penggunaan untuk sp_prepare / sp_prepexec