MySQL Select deyimi table1.id! = Table2.id

3 Cevap php

Ben, mesajları olan veri bir tablo var o zaman ben mesajları sildi verilerin ayrı bir tablo var. Ne bir yazı silinmiş olur bu kimliği olsun en silinen tabloya eklenir ziyade sonrası giriş çıkarmadan daha olmasıdır.

Silinen tablodaki kendi kimliğine sahip olanları seçmeden mesajlar tablosundan tüm mesajları seçerek temiz bir etkili yolu nedir

3 Cevap

Eğer tabloları değiştiremezsiniz varsa, mümkün olduğunda bir Left Join (which will join your deleted_table yapmak) ve daha sonra {olmak için id için kontrol edebilirsiniz [(3)] } (hiçbir satır bulundu demektir).

Select everything_you_need
From post_table p
Left Join delete_table d On ( d.id = p.id )
Where d.id Is Null;

En iyi performans için hem id-sütunlar üzerinde dizin var emin olun.

Bu mesajlar masa ve mağaza ve silinen boolean değerine fazladan bir sütun eklemek daha kolay olmaz mıydı? Bunu, 0 = silinmiş değil silinmiş kim saklamak istiyorsanız veya (kullanıcı kimliği temsil etmek için) bir tamsayı alanı kullanabilirsiniz.

Eğer bigstylee anlaşılacağı gibi bir boolean bayrak kullanmak için iyi bir nedeniniz varsa, bir YOKTUR alt sorgu kullanabilirsiniz:

SELECT * FROM table1 
  WHERE NOT EXISTS 
  (SELECT * FROM table2 WHERE table1.id=table2.id);