Aynı tablodaki verileri bir sütundan diğerine nasıl kopyalayabilirim?


Yanıtlar:


466

Buna ne dersin

UPDATE table SET columnB = columnA;

Bu, her satırı güncelleyecektir.


1
Diğer sütuna eski değerini aktarmak ve birincisini güncellemek istiyorsanız bu da çalışır: UPDATE table SET columnA = 'new value', columnB = columnA. Diğer cevapların dediği gibi - sadece gerekli olanı güncellemek için WHERE yantümcesini unutmayın.
Carl di Ortus

5
Bazı karmaşık proc cevap çok basit olduğunda her kayıt bir döngü yapıyor düşünüyorum
deFreitas

6
@deFreitas Akıllı bir adam bana şunları söyledi: SQL'de bir şeyi başarmak için bir döngü yazmayı düşünüyorsanız yanlış yapıyorsunuz.
Daniel Patrick

95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

10
@ Mark, bu gerçekten mantıklı, bu neden indirgendi? Bir tarih değerini bir sütundan diğer sütunlara kopyalamam gereken bir durum vardı ve bu yalnızca bazı sütunlar için geçerli ve hepsi için geçerli değil. Bu yüzden açıklamada bir WHERE'ye sahip olmak gerekli olacaktır.
finnTheHumin

5
@finnTheHuman Soru, daha önceki cevabın doğru cevap verdiği "tüm kayıtlardaki verileri nasıl kopyalayacağınızı" sorar, böylece bu hiçbir şey eklemez
mmmmmm

7
@Mark "Bu, kabul edilen eski cevaptan nasıl farklıdır", WHERE yan tümcesi vardır. "Yani bu hiçbir şey eklemiyor", katılmıyorum, bir şeyler ekliyor. GEREKLİ OLURSA NEREDE yan tümcesini eklemek iyi bir noktadır. cevapları küçümsemekten sorumlu olmalıyız. nefret
edenler

Benim durumumda bir last_seen sütunu ekledim. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald

Birinizle aynı fikirde değilim. Ama kim olduğunu söylemeye istekli değil !. Madde bir muamele gibi çalışıyor
Andrew Day

0

Güvenli mod etkin değilse, bu sütunlardaki tüm satırlar güncellenir.

UPDATE table SET columnB = columnA;

Güvenli mod etkinleştirilirse, burada bir yan tümce kullanmanız gerekir. Temel anahtar 0'dan büyük olarak kullanıyorum, temelde hepsi güncellenecek

UPDATE table SET columnB = columnA where table.column>0;

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.