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

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • steven johns

    steven johns

    11 Mart 2011
  • videoisunrelated

    videoisunrel

    5 Mart 2009