SORU
21 EKİM 2009, ÇARŞAMBA


Bir SQL Server'da tablo BİRLEŞTİRME kullanarak güncelleme?

Bir tablo diğer tablo birleştirme yaparken örneğin: bir sütun güncellemek istiyorum

UPDATE table1 a 
INNER JOIN table2 b ON a.commonfield = b.[common field] 
SET a.CalculatedColumn= b.[Calculated Column]
WHERE 
    b.[common field]= a.commonfield
AND a.BatchNO = '110'

Ama şikayetçi :

15, 1, 2 Satır Devlet Hata 170
Hat 2: yakınında Yanlış sözdizimi 'bir'.

Burada yanlış olan nedir?

CEVAP
21 EKİM 2009, ÇARŞAMBA


Oldukça SQL Sunucu UPDATE FROM özel sözdizimi aşağı yok. Ayrıca CommonField katılmak ve aynı zamanda daha sonra filtre için neden ihtiyaç duyduğunu bilmiyorum. Bunu deneyin:

UPDATE t1
  SET t1.CalculatedColumn = t2.[Calculated Column]
  FROM dbo.Table1 AS t1
  INNER JOIN dbo.Table2 AS t2
  ON t1.CommonField = t2.[Common Field]
  WHERE t1.BatchNo = '110';

Eğer yaptığın şey gerçekten aptal gibi sürekli çalışan set değeri bir sütun için toplam başka bir sütun (ihlal prensibi kaçınarak saklamak gereksiz verileri) kullanabilirsiniz a CTE (common table expression):

;WITH t2 AS
(
  SELECT [key], CalculatedColumn = SUM(some_column)
    FROM dbo.table2
    GROUP BY [key]
)
UPDATE t1
  SET t1.CalculatedColumn = t2.CalculatedColumn
  FROM dbo.table1 AS t1
  INNER JOIN t2
  ON t1.[key] = t2.[key];

Bu gerçekten saçma olmasının nedeni, yeniden çalıştırmak tüm bu güncelleme table2 herhangi bir satır değişiklikleri her zaman olacak. SUM her zaman çalışma zamanında hesaplamak ve, bunu yaparken, asla sonuç bayat endişelenmenize gerek bir şey değildir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BASS212M

    BASS212M

    15 Temmuz 2009
  • David Wills

    David Wills

    31 Aralık 2007
  • thenewboston

    thenewboston

    4 ŞUBAT 2008

İLGİLİ SORU / CEVAPLAR