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?

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

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.



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;

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"


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!


-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 ;
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.