Ubah Data Satu Sel di mysql

156

Bagaimana saya bisa mengubah data hanya dalam satu sel tabel mysql. Saya memiliki masalah dengan UPDATE karena itu membuat semua parameter dalam kolom berubah tetapi saya hanya ingin satu yang berubah. Bagaimana?

kasrsf
sumber
Apa yang sudah Anda coba sejauh ini? Bisakah Anda membagikan kueri yang Anda gunakan? Biasanya, Anda tidak memperbarui "semua parameter dalam kolom"
Nico Haase

Jawaban:

191

Anda mungkin perlu menentukan baris mana yang ingin Anda perbarui ...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;
Brian Hooper
sumber
1
Saya bingung dengan jawaban ini, berpikir SET baris yang dipilih untuk diubah, dan DI MANA mengubahnya.
Keith
dapatkah kondisi di WHERE menjadi column1 = old_value?
weefwefwqg3
@ weefwefwqg3, ya, itu bisa, tetapi tidak ada gunanya. Jika Anda tidak mengubah nilainya, tinggalkan saja di bagian SET.
Brian Hooper
1
@ Brian Hooper: Saya perlu mengubah nilainya, saya ingin bertanya apakah saya bisa melakukan ini: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3
2
@ weefwefwqg3, Ah, saya mengerti, maaf, serangan miopia. Ya, itu akan baik-baik saja.
Brian Hooper
113

Jawaban saya mengulangi apa yang orang lain katakan sebelumnya, tetapi saya pikir saya akan menambahkan contoh, menggunakan MySQL, hanya karena jawaban sebelumnya agak samar bagi saya.

Bentuk umum dari perintah yang perlu Anda gunakan untuk memperbarui kolom satu baris:

UPDATE my_table SET my_column='new value' WHERE something='some value';

Dan ini sebuah contoh.

SEBELUM

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10104 | 
+------------+-------+
2 rows in set (0.00 sec)

MEMBUAT PERUBAHAN

mysql> update ae set port='10105' where aet='CDRECORD';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

SETELAH

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10105 | 
+------------+-------+
2 rows in set (0.00 sec)
slm
sumber
Terima kasih atas demonstrasi ini. Kueri di atas akan memperbarui semua instance CDRECORD di kolom aet Anda. Namun, ketika memperbarui sel tertentu dalam kolom tertentu, lebih baik melakukannya berdasarkan ID kolom, yaitu, di mana ID = xx
Mohammed
Biasanya yang terbaik adalah menggunakan kunci utama baris, baris pengidentifikasi unik (yang sering merupakan ID, tetapi tidak selalu). Jujur itu tergantung pada apa yang ingin Anda lakukan yang mendefinisikan praktik "terbaik"
Garret Gang
30

UPDATE hanya akan mengubah kolom yang Anda daftarkan secara khusus.

UPDATE some_table
SET field1='Value 1'
WHERE primary_key = 7;

The WHEREbatas klausul baris yang diperbarui. Secara umum Anda akan menggunakan ini untuk mengidentifikasi nilai kunci utama (atau ID) tabel Anda, sehingga Anda hanya memperbarui satu baris.

The SETklausul memberitahu MySQL yang kolom update. Anda bisa daftar kolom sebanyak atau sesedikit yang Anda inginkan. Apa pun yang tidak Anda cantumkan tidak akan diperbarui.

VoteyDisciple
sumber
11

UPDATE hanya mengubah nilai yang Anda tentukan:

UPDATE table SET cell='new_value' WHERE whatever='somevalue'
mendengus
sumber
9

Coba yang berikut ini:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName
pengguna3668628
sumber
Silakan tambahkan beberapa penjelasan untuk jawaban Anda sehingga orang lain dapat belajar darinya - apa fungsinya @parameterName ?
Nico Haase
7

<tablename> SET TABLE UPDATE <COLUMN=VALUE> DI MANA <CONDITION>

Contoh:

UPDATE TABLE teacher SET teacher_name='NSP' WHERE teacher_id='1'
NSP
sumber
3

coba ini.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';
abhay
sumber
1
Selamat Datang di Stack Overflow! Sementara potongan kode ini diterima, dan dapat memberikan bantuan, akan sangat ditingkatkan jika menyertakan penjelasan tentang bagaimana ia menjawab pertanyaan. Tanpa itu, jawaban Anda memiliki nilai pendidikan yang jauh lebih rendah - ingat bahwa Anda akan menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang! Harap edit jawaban Anda untuk menambahkan penjelasan, dan berikan indikasi batasan dan asumsi apa yang berlaku.
Toby Speight
0

Beberapa kolom di MySQL memiliki klausa "saat pembaruan", lihat:

mysql> SHOW COLUMNS FROM your_table_name;

Saya tidak yakin cara memperbarui ini tetapi akan memposting suntingan ketika saya mengetahuinya.

Jake_Howard
sumber
Jika ada "pada pembaruan" itu akan berada di kolom "Ekstra" dari tabel yang Anda dapatkan ketika menjalankan perintah di atas.
Jake_Howard