SORU
30 NİSAN 2009, PERŞEMBE


MySQL kullanarak GÜNCELLEME birden fazla tablo BİRLEŞTİRME SOL

İki tablo var, ve bir SOL tüm satırlar için T1 alanları KATILIN güncellemek istiyorum.

Kolay bir örnek için, aşağıdaki tüm satırlar sonuç-set güncelleme:

SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL  

MySQL manual der ki:

Birden fazla tabloda UPDATE deyimi katılmak herhangi bir türünü SEÇİN tablolar, SOL BİRLEŞTİRME gibi izin kullanabilir.

Ama birden çok tablo belgelenmiş GÜNCELLEME yapmak için doğru sözdizimi bulabilirsiniz.

Doğru sözdizimi nedir?

CEVAP
30 NİSAN 2009, PERŞEMBE


UPDATE  t1
LEFT JOIN
        t2
ON      t2.id = t1.id
SET     t1.col1 = newvalue
WHERE   t2.id IS NULL

SELECT için daha verimliNOT IN / NOT EXISTS kullanımı: kullanmak için olacağını unutmayın

SELECT  t1.*
FROM    t1
WHERE   t1.id NOT IN
        (
        SELECT  id
        FROM    t2
        )

Performans detayları için: benim blog makaleye bakın

Ne yazık ki, MySQL UPDATE bir ifade, bir alt sorgu içinde hedef tablo kullanma izin vermiyor, daha az etkili LEFT JOIN sözdizimi ayrılmamak gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CMTelly

    CMTelly

    2 Mayıs 2007
  • itfigueres

    itfigueres

    12 EKİM 2013
  • njhaley

    njhaley

    24 NİSAN 2006