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
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.
Nasıl tam ve git deposu init ile oluşt...
Nasıl Python ederken bir listesi düzen...
Nasıl SQL Server ile kullanma İÇ BİRLE...
Nasıl bir dizindeki tüm dosya ve klasö...
Nasıl Google Analytics bir özelliği si...