AnalyticDB for MySQL içinde tek bir tablodaki verileri değiştirmek veya birden çok tabloyu birleştirerek güncellemek için UPDATE ifadesini kullanın.
Sınırlamalar
Hedef tablonun bir birincil anahtarı olmalıdır.
Birincil anahtar sütunları güncellenemez.
ORDER BYveLIMITyan tümceleri yalnızca tek tablo güncellemelerinde desteklenir.Çoklu tablo güncellemeleri en fazla iki tablonun birleştirilmesini destekler.
Her
UPDATEifadesi yalnızca bir tabloyu hedef alabilir. Değiştirilecek tablo ifadede ilk sırada yer almalıdır.Çoklu tablo
UPDATEişlemi AnalyticDB for MySQL V3.1.6.4 veya sonraki sürümlerini gerektirir. Küme sürümünüzü kontrol etmek veya yükseltmek için AnalyticDB for MySQL konsoluna gidin, Cluster Information sayfasındaki Configuration Information bölümüne bakın. Alt sürümü güncelleme talimatları için bkz. Kümenin alt sürümünü güncelleme.
Tek bir tabloyu güncelleme
Söz dizimi
UPDATE table_name
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT ...]
Kimliğe göre bir satırı güncelleme
2369 kimlikli müşterinin adını Claire olarak değiştirin:
UPDATE customer
SET customer_name = 'Claire'
WHERE customer_id = '2369';
Güncellemeyi doğrulamak için:
SELECT customer_id, customer_name
FROM customer
WHERE customer_id = '2369';
Birden çok tabloyu güncelleme
İkinci bir tablodan değerleri okumak ve bunları ilk tabloya yazmak için bir JOIN yan tümcesi kullanın.
Söz dizimi
UPDATE table_name1
[INNER JOIN | LEFT JOIN] table_name2 ON table_name1.column = table_name2.column
SET assignment_list
[WHERE where_condition]
Güncellenecek tabloyu UPDATE ifadesinde ilk sıraya yerleştirin.
LEFT JOIN kullanarak bir sütunu güncelleme
new_customer tablosundaki eşleşen kaydı kullanarak 2369 kimlikli müşterinin yaşını değiştirin:
UPDATE customer
LEFT JOIN new_customer ON customer.customer_id = new_customer.customer_id
SET customer.customer_age = 42
WHERE new_customer.customer_id = '2369';
Güncellemeyi doğrulamak için:
SELECT customer_id, customer_age
FROM customer
WHERE customer_id = '2369';
INNER JOIN kullanarak bir sütunu güncelleme
Eşleşen customer_id değerine dayanarak customer_name sütununu new_customer tablosundan customer tablosuna kopyalayın:
UPDATE customer
INNER JOIN new_customer ON customer.customer_id = new_customer.customer_id
SET customer.customer_name = new_customer.customer_name;
customer ve new_customer tabloları arasında müşteri adı eşleşen tüm satırlar için customer_id değerini 2369 olarak ayarlayın:
UPDATE customer
INNER JOIN new_customer ON customer.customer_name = new_customer.customer_name
SET customer.customer_id = '2369';
Bir sütunu sabit bir değere ayarlama
Müşteri adı new_customer tablosundaki bir satırla eşleşen customer tablosundaki tüm satırlar için customer_id değerini 1 olarak ayarlayın:
UPDATE customer
LEFT JOIN new_customer ON customer.customer_name = new_customer.customer_name
SET customer.customer_id = '1';
Kullanım notları
INSERT ON DUPLICATE KEY UPDATE ile yüksek frekanslı güncellemeler
INSERT ON DUPLICATE KEY UPDATE işlemini saniyede 100'den fazla sorgu (QPS) hızında veya büyük veri hacimlerinde çalıştırmak CPU kullanımını önemli ölçüde artırabilir. Yüksek aktarım hızlı upsert iş yükleri için bunun yerine REPLACE INTO kullanın. Daha fazla bilgi için bkz. REPLACE INTO.