İki yapısal olarak aynı tablo var, tablo2 toplu güncelleştirme tablo1'de kullanılacak yeni veriler için bir aşamadır.MySQL iki tabloyu karşılaştırır ve aynı birincil anahtara sahip satırları döndürür, ancak diğer alanlarda farklı veriler
Tablo1'de hangi satırların güncelleneceğini bulmam gerekiyor. Eklenecek satırları ve silinecekleri göz ardı etmek istiyorum. Yalnızca birincil anahtarın aynı kaldığı güncellenmiş satırlarla ilgileniyorum ancak satırdaki diğer alanlardan bir veya daha fazlası farklı veriler içeriyor. Şimdiye kadar geldiğim en yakın şey şu ifadedir:
SELECT table2.* FROM table2
INNER JOIN table1
ON table1.primarykey = table2.primarykey
WHERE table1.field1 != table2.field1
OR table1.field2 != table2.field2
OR table1.field3 != table2.field3
Bu, 0 satırı döndürür.
DÜZENLEME: Sorgu gerçekten çalışıyor. Verilerin kendisiyle ilgili bir sorun vardı. Bir süreliğine facepalm gidiyorum.
Girişiniz için herkese teşekkür ederiz.
Alanlar null olabilir mi? –
Conrad geldikçe, null eşit değil, niçin sizin karşılaştırmanıza göre bunu hesaba katmanız gerekiyor - yazdığınız şekilde, veriler "aynı" olabilir ama eğer boş olanlar varsa eşit olarak görünmez Orada. – Poodlehat
Ayrıca, izin veren bir depolama altyapısı kullanıyorsanız, neden otomatik yükleme özelliğini kapatmıyor, güncelleştirmeyi çalıştırın ve nelerin değiştiğini görün, sonra geri alın? – Poodlehat