Bir kaydın sütun değerine göre Mulitple Kayıtları Seç

3 Cevap php

Ben ilgili kayıtları (aynı kaydın birden fazla düzeltme) içeren bir tablo var. Her kayıt, tarih (tarih, saat, ve microtime) benzer bir dize alanı vardır. Belirli bir tarihten daha eski olan tüm kayıtları seçmek istiyorum. Bir kayıt belirli bir tarihten daha yeni bir ilişkili bir kayıt varsa, ben bu ilgili kayıtların herhangi seçmek istemiyorum. Bu select deyimi için herhangi bir fikir? Sonunda, bir ÇIKARIN ifadesi olacaktır.

Edit: Bazı Örnek Satırlar

id    shared_id    date                         type      other_data...
1     2            2010-01-01 01:02:03.1234567  original  ...
2     3            2010-01-15 11:12:03.1234733  original  ...
3     2            2010-02-01 03:04:04.5465654  amendment ...

Benim cut-off tarihi "2010-01-31" idiyse, ben id # 1 kesme tarihten daha yeni bir değişiklik var çünkü sadece id # 2 seçmek isterim.

3 Cevap

I link Bana seçme deyimini oluşturmak yardımcı buldum.

SELECT DISTINCT T.shared_id,T.date,T.id  
FROM table T  WHERE T.date = ( 
SELECT MAX( date ) FROM table WHERE shared_id = T.shared_id )  
AND T.date < 'my_cut_off_date_string'

Bu benim için iş gibi görünüyor. Herkesin yardım için teşekkürler.

Maybe you can try the DATEDIFF() function, check this out: Link 1

Ya da bu bir: Link 2

Ya da (veri <= anotherdata tablodan seçin), ancak bu durumda zaman damgası biçimi hem verileri dönüştürmek için gereken klasik sorguyu deneyebilirsiniz

DELETE from tablename where relatedField = 'relatedValue' AND dateField <= dateToDeleteFrom

Bu satırlar boyunca bir şey ben senaryo anlarsanız, bunu yapmak için gereken ne yapmalıyım. Eğer örnek bir veri kümesi sağlamak ben daha doğru bir ihtiyacı temsil etmek deyimi ayarlayabilirsiniz, ama bu iyi bir başlangıç ​​noktası olduğunu düşünüyorum.

HTH, Jc