it-swarm-id.com

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

Saya punya tabel dengan dua kolom DATETIME.

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

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

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

74
user1002358

Kedengarannya seperti Anda bekerja di satu meja saja jadi sesuatu seperti ini:

update your_table
set B = A
where B is null
127
mu is too short
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
16
Icarus

Saya akan melakukannya dengan cara ini:

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

COALESCE adalah fungsi yang mengembalikan argumen non-nol pertamanya.

Dalam contoh ini, jika B pada baris yang diberikan bukan nol, pembaruan adalah no-op.

Jika B adalah nol, COALESCE akan melewatkannya dan menggunakan A sebagai gantinya.

13
Bill Karwin

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

update some_table set null_column = not_null_column where null_column is null
4
rwilliams

Berikut ini contoh kode yang mungkin membantu Anda mengatasi Kolom A ke Kolom B:

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