2016-04-05 16 views
2

1 belirli customer_id için bir sorum var. Tablodaki her customer_id için bu sorguyu nasıl uygularım?Tabloda her bir kimlik için SQL sorgusu

SELECT  * 
FROM  table 
WHERE  date <= '2015-12-31 23:59:59' AND customer_id = 100 
ORDER BY date DESC 
LIMIT  1 

cevap

1

Sen NOT EXISTS() kullanabilirsiniz: Bu tarih filtreden sonra sadece bir kayıt seçecektir

SELECT * FROM YourTable t 
WHERE t.date <= '2015-12-31 23:59:59' 
AND NOT EXISTS(SELECT 1 FROM YourTable s 
       WHERE t.customer_id = s.customer_id 
       AND t.date < s.date) 

nerede NOT EXISTS daha büyük bir tarihle aynı kimliği için bir rekor. Temel olarak hepsi için limit 1 ile aynı.

0

Sen iç birleşim (Tablo seçin *) ler t.customer_id = s.customer_id nerede t.date = '2015-12-31 23 İç YourTable t

Seç * katılmak kullanabilirsiniz: 59:59 ' tarihe göre sırayla