SORU
17 Kasım 2009, Salı


Nasıl yinelenen girdileri silmek için?

Varolan bir tablo için benzersiz bir kısıtlama eklemek lazım. Bu tablo satır zaten milyonlarca var bunun dışında gayet iyi, ve pek çok satır eklemek istiyorum benzersiz kısıtlamayı ihlal.

Soruna neden olan satırları kaldırmak için en hızlı yaklaşımı nedir? Çiftleri bulur ve siler SQL deyimi var, ama sonsuza kadar çalıştırmak için alıyor. Bu sorunu çözmek için başka bir yol var mı? Belki de masa yedekleme, kısıtlama eklenir sonra geri?

CEVAP
14 Aralık 2010, Salı


Bu yaklaşımlardan bazıları biraz karmaşık görünüyor, ben genellikle bu gibi yapın:

tabloda verilen table, () alan1, alan2 max ile satır alan3 tutmak benzersiz olmak istiyorum

DELETE FROM table USING table alias 
  WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
    table.max_field < alias.max_field

Örneğin user_accounts ve e-posta benzersiz bir kısıtlama eklemek istediğim bir tablo var ama bazı çiftleri var. En son oluşturulan (çiftleri arasında max id) devam etmek istiyorum da diyebilir.

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Not - USING standart sql, PostgreSQL bir uzantısıdır (ama çok yararlı bir), ama asıl soruya özellikle postgresql bahseder.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • YAN TV

    YAN TV

    20 EKİM 2011