MySQL'de bir hücrenin verilerini değiştirme


156

Bir mysql tablosunun yalnızca bir hücresindeki verileri nasıl değiştirebilirim? Bir sütun değişikliği tüm parametreleri yapar, ancak yalnızca bir değişiklik istiyorum UPDATE ile sorunum var. Nasıl?


Şimdiye kadar ne denedin? Kullandığınız sorguyu paylaşabilir misiniz? Genellikle, "bir sütundaki tüm parametreleri" güncellemezsiniz
Nico Haase

Yanıtlar:


191

Muhtemelen hangi satırları güncellemek istediğinizi belirtmeniz gerekir ...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;

1
SET'in değiştirilecek satırları seçtiğini ve NEREDE onları değiştirdiğini düşünerek bu cevaptan kafam karıştı.
Keith

NEREDE koşul sütun1 = eski_değer olabilir?
weefwefwqg3

@ weefwefwqg3, evet, olabilir, ama bir anlamı yok. Değeri değiştirmiyorsanız, SET kısmının dışında bırakın.
Brian Hooper

1
@Brian Hooper: Değeri değiştirmem gerekiyor, bunu yapıp yapamayacağımı sormak istiyorum: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3

2
@ weefwefwqg3, Ah, üzgünüm, miyopi saldırısı görüyorum. Evet, gayet iyi olurdu.
Brian Hooper

113

Cevabım, başkalarının daha önce söylediklerini tekrarlamak, ancak MySQL, sadece önceki cevaplar benim için biraz şifreli olduğu için kullanarak bir örnek ekleyeceğimi düşündüm .

Tek bir satırın sütununu güncellemek için kullanmanız gereken komutun genel biçimi:

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

Ve işte bir örnek.

ÖNCE

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

DEĞİŞİKLİK YAPMAK

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

SONRA

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

Bu gösteri için teşekkürler. Yukarıdaki sorgu, sütun aet'inizdeki tüm CDRECORD örneklerini güncelleyecektir. Bununla birlikte, belirli bir sütundaki belirli bir hücreyi güncellerken, bunu sütunun kimliğine göre yapmak daha iyidir, yani burada ID = xx
Mohammed

Genellikle satır birincil anahtarını (satırların benzersiz tanımlayıcısını) (genellikle kimliktir, ancak her zaman değil) kullanmak en iyisidir. Dürüst olmak gerekirse, "en iyi" uygulamayı tanımlayan ne yapmak istediğinize bağlıdır
Garret Gang

30

UPDATE yalnızca özel olarak listelediğiniz sütunları değiştirir.

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

WHERESatırlar güncellenir fıkra sınırlar. Genellikle bunu, tablonuzun birincil anahtar (veya kimlik) değerini tanımlamak için kullanırsınız, böylece yalnızca bir satırı güncellersiniz.

SETFıkra güncelleme MySQL'in sütunlar söyler. İstediğiniz sayıda sütun ekleyebilirsiniz. Listelediğiniz hiçbir şey güncellenmez.


11

UPDATE yalnızca belirttiğiniz değerleri değiştirir:

UPDATE table SET cell='new_value' WHERE whatever='somevalue'

9

Takip etmeyi dene:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName

Lütfen cevabınıza başkalarının ondan öğrenebilecekleri bir açıklama ekleyin - bu ne işe @parameterName yarar?
Nico Haase

7

GÜNCELLEME TABLO <tablename> SET <COLUMN=VALUE> NEREDE <CONDITION>

Misal:

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

3

bunu dene.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';

1
Stack Overflow'a hoş geldiniz! Bu kod snippet'i hoş geldiniz ve bazı yardımlar sağlayabilir, ancak soruyu nasıl ele aldığına dair bir açıklama içeriyorsa büyük ölçüde geliştirilecektir . Bu olmadan, cevabınızın çok daha az eğitimsel değeri vardır - sadece şimdi soran kişi için değil, gelecekte okuyucular için soruyu cevapladığınızı unutmayın! Lütfen açıklama eklemek için cevabınızı düzenleyin ve hangi sınırlamaların ve varsayımların geçerli olduğunu belirtin.
Toby Speight

0

MySQL'deki bazı sütunlarda "güncellemede" yan tümcesi vardır, bkz:

mysql> SHOW COLUMNS FROM your_table_name;

Bunu nasıl güncelleyeceğimden emin değilim ama öğrendiğimde bir düzenleme yayınlayacak.


"Güncellemede" varsa, yukarıdaki komutu yürütürken aldığınız tablonun "Ekstra" sütununda olacaktır.
Jake_Howard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.