2013-03-01 15 views
7

Eğer SQL bu şekilde çalışmıyorsa, çoğunlukla C++/C# kodlarımda ve SQL'de çok fazla tecrübem yoksa özür dilerim. Temel olarak tablonun her satırı boyunca yinelemek ve diğer sütunlara dayalı bir sütun değerini değiştirmek istiyorum. Bir tablo örneği şöyle olabilir:Diğer sütunlardaki (aynı satır için) değerlere dayanarak bir tablonun tüm satırlarındaki bir sütunu nasıl güncelleştiririm?

__________________________ 
|first #|second #|third #| 
|_______|________|_______| 
|___1___|___1____|___0___| 
|___5___|___2____|___0___| 
|___3___|___6____|___0___| 
|___2___|___4____|___0___| 

Şimdi, sözde kod, ben eşdeğer almaya çalışıyorum: Bu bir SQL eşdeğerini almak için bir yol ne olurdu

foreach row in mytable, column 3 = column 1 + column 2 

, ya da bu şekilde yapılmaz mı? Bu, bu kadar basit olabilir

cevap

16

,

zaten basit bir güncelleştirme cevaplanmışsa gibi
UPDATE tableName 
SET thirdCol = firstCol + secondCol 
5

kullanılarak yapılabilir: Özellikle basit hesaplamalar için,

UPDATE MyTable 
SET  Column3 = Column1 + Column2; 

Ancak caclulated depolanması değerleri iyi değil uygulama (her zaman istisnalar vardır ve bu bir kural değildir, kural değildir), eğer sütun3 her zaman Sütun1 ve sütun2'nin toplamıysa, o zaman DBMS'niz izin veriyorsa hesaplanmış bir sütun oluşturabilirsiniz.

örn. SQL Server:

ALTER TABLE MyTable ADD Column4 AS Column1 + Column2; 

senin DBMS sadece baz verileri değil, hesaplama depolamak için bunun bir görünüm yaratabilir hesaplanan sütunlar izin vermezse (yine sözdizimi DBMS göre değişiklik gösterebilir):

bu yöntemlerden
CREATE VIEW myTableWithTotal 
AS 
    SELECT Column1, Column2, Column1 + Column2 AS Column2 
    FROM MyTable 

ya sütun3 değeri sütun1 veya sütun2 güncellenir bile bugüne kadar ilave bilgiler için

+0

Teşekkür kadar kalır sağlayacaktır! Neyse ki böyle bir şey uygulamaya gerek yok ama gelecekteki uygulamalar için bilmek yararlıdır. – proseidon

+0

Teşekkürler ama orijinal sütun bizim durumumuzda daha sonra silinecek, ancak gelecekteki uygulamalar için bilmek yararlıdır. – Roel

İlgili konular