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.

pengguna1002358
sumber

Jawaban:

159

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

update your_table
set B = A
where B is null
mu terlalu pendek
sumber
21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Icarus
sumber
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.

Bill Karwin
sumber
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
rwilliams.dll
sumber
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;
Waruna Manjula
sumber
Catatan Moderator - Harap jangan mengembalikan pembaruan yang valid ke posting Anda.
Bhargav Rao