Salin nilai dari satu kolom ke yang lain dalam tabel yang sama

168

Bagaimana saya bisa membuat nilai salinan dari satu kolom ke yang lain? Saya sudah:

Database name: list
number | test
123456 | somedata
123486 | somedata1
232344 | 34

Saya ingin memiliki:

Database name: list
number | test
123456 | 123456
123486 | 123486
232344 | 232344

Query mysql apa yang harus saya miliki?

Lucas
sumber

Jawaban:

362

Jawaban singkat untuk kode yang dimaksud adalah:

UPDATE `table` SET test=number

Berikut tableadalah nama tabel dan dikelilingi oleh aksen kubur (alias back-ticks `) karena ini adalah konvensi MySQL untuk keluar dari kata kunci (dan TABLEmerupakan kata kunci dalam hal ini).

WASPADALAH, bahwa ini adalah kueri yang cukup berbahaya yang akan menghapus semua kolom testdi setiap baris tabel Anda menggantikannya dengan number(terlepas dari nilainya)

Lebih umum menggunakan WHEREklausa untuk membatasi kueri Anda hanya pada set baris tertentu:

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10
Juicy Scripter
sumber
22
Ini adalah salah satu kesempatan langka di mana pengembang berpikir seperti orang awam.
Zaxter
9
Hati-hati jika Anda tidak terbiasa dengan update command... Tanpa klausa WHERE , perintah ini akan update SEMUA mencatat dalam tabel.
Gmo
Sangat sederhana! Terima kasih! Wow!
JimboSlice
1
Potensi serius untuk menghapus banyak data, seperti yang diingatkan @gmo. Pertimbangkan untuk membuat cadangan database terlebih dahulu, kemudian jalankan kueri dengan klausa WHERE untuk membatasinya ke satu baris. Jika Anda puas dengan hasilnya, hapus klausa WHERE.
blogo
Luar biasa. tidak memikirkan hal itu. Terima kasih.
Onkar Musale
28
UPDATE `table_name` SET `test` = `number`

Anda juga dapat melakukan perubahan matematis dalam proses atau menggunakan fungsi MySQL untuk mengubah nilai.

Czechnology
sumber
9

coba ini:

update `list`
set `test` = `number`
juergen d
sumber
bukankah listnama db?
Juicy Scripter
daftar adalah <nama tabel>
user2439124
8

WASPADALAH : Urutan kolom pembaruan sangat penting

BAIK : Apa yang saya inginkan menyimpan Nilai Status yang ada ke PrevStatus

UPDATE Collections SET  PrevStatus=Status, Status=44 WHERE ID=1487496;

BAD : Status & PrevStatus keduanya berakhir sebagai 44

UPDATE Collections SET  Status=44, PrevStatus=Status WHERE ID=1487496;
zzapper
sumber
Mengapa Anda mengatur Status = 44?
Sceletia
@celetia hanya nilai arbitrer untuk menunjukkan masalah
zzapper
6

coba ikuti:

UPDATE `list` SET `test` = `number` 

itu menciptakan salinan semua nilai dari "angka" dan menempelkannya ke "tes"

Jigneshsinh Rathod
sumber
3

Mengikuti berhasil untuk saya ..

  1. Pastikan Anda tidak menggunakan Safe-mode di aplikasi editor kueri Anda. Jika ya, nonaktifkan!
  2. Kemudian jalankan perintah sql berikut

untuk tabel katakanlah, 'test_update_cmd', kolom nilai sumber col2, kolom nilai target col1 dan kolom kondisi col3: -

UPDATE  test_update_cmd SET col1=col2 WHERE col3='value';

Semoga berhasil!

nitinr708
sumber
-7

Anda dapat melakukannya dengan Prosedur juga jadi saya punya prosedur untuk ini

 DELIMITER $$
 CREATE PROCEDURE copyTo()
       BEGIN
               DECLARE x  INT;
            DECLARE str varchar(45);
              SET x = 1;
            set str = '';
              WHILE x < 5 DO
                set  str = (select source_col from emp where id=x);
            update emp set target_col =str where id=x;      
            SET  x = x + 1;
                END WHILE;

       END$$
   DELIMITER ;
Karan Kumar Mahto
sumber