SQL menetapkan nilai satu kolom sama dengan nilai kolom lain dalam tabel yang sama


97

Saya memiliki tabel dengan dua kolom DATETIME.

Salah satunya tidak pernah NULL, tapi salah satunya terkadang NULL.

Saya perlu menulis kueri yang akan mengatur semua baris NULL untuk kolom B sama dengan nilai di kolom A.

Saya telah mencoba contoh ini tetapi SQL dalam jawaban yang dipilih tidak dijalankan karena MySQL Workbench sepertinya tidak menyukai FROM di UPDATE.

Jawaban:


159

Sepertinya Anda bekerja hanya dalam satu meja, jadi seperti ini:

update your_table
set B = A
where B is null

21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL

21

Saya akan melakukannya dengan cara ini:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE adalah fungsi yang mengembalikan argumen non-null pertamanya.

Dalam contoh ini, jika B pada baris tertentu tidak null, pembaruannya adalah no-op.

Jika B nol, COALESCE melewatinya dan menggunakan A sebagai gantinya.


5

Saya tidak berpikir bahwa contoh lain adalah yang Anda cari. Jika Anda hanya memperbarui satu kolom dari kolom lain dalam tabel yang sama, Anda harus dapat menggunakan sesuatu seperti ini.

update some_table set null_column = not_null_column where null_column is null

1

Berikut adalah contoh kode yang dapat membantu Anda mengatasi Kolom A ke Kolom B:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

Catatan Moderator - Harap jangan mengembalikan pembaruan yang valid ke posting Anda.
Bhargav Rao
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.