2017-02-03 2 views
0

SELECT * FROM mytable WHERE TrackDate zwischen DATE_SUB ("2015-01-12 13:47:30", INTERVALL 7 DAY) UND "2015-01-12 13:47: 30"Bedingte Abfrage beim Abrufen von Daten zwischen zwei Daten mit Intervall

Mytable

**id-----------|-----keyword(varchar)----|--------trackdate(timestamp)** 

1------------|--------a------------------------|-------2015-01-12 13:47:02 
15------------|------ *NULL* ----------------------|-------2015-01-12 12:47:02 

2------------|--------b------------------------|-------2015-01-12 10:47:02 

3------------|--------c------------------------|--------2015-01-12 1:47:02 

4------------|--------d------------------------|-------2015-01-10 13:47:02 

5------------|--------e------------------------|-------2015-01-10 10:47:02 

6------------|--------f------------------------|-------2015-01-10 1:47:02 

7------------|--------g------------------------|--------2015-01-9 13:47:02 

8------------|--------h------------------------|--------2015-01-9 10:47:02 

9------------|--------i------------------------|--------2015-01-9 1:47:02 

10------------|--------j-----------------------|--------2015-01-6 13:47:02 

11------------|--------k-----------------------|--------2015-01-5 10:47:02 

12------------|--------l-----------------------|--------2015-01-2 1:47:02 

sollte Mein ausgegeben:

1------------|--------a------------------------|-------2015-01-12 13:47:02 

4------------|--------d------------------------|-------2015-01-10 13:47:02 

7------------|--------g------------------------|--------2015-01-9 13:47:02 

10------------|--------j-----------------------|--------2015-01-6 13:47:02 

Aber ich bekomme wie alle Daten zwischen dem Datum 2015-01-12 und 2015-01-6. Ich möchte die doppelten Daten Datensätze aus der Ausgabe zu beseitigen, indem nur die Datensätze eines Datums, die maximal aus diesen doppelten Daten (wie ich eliminierte ID = 2,3 von 2015-01-12 und Anzeigen ID 1).

+0

welchem ​​Tag hat Ihre * "2015-01- 13.47.30" *? – RomanPerekhrest

+0

Überprüfen Sie es jetzt @RomanPerekhrest – subhajit

+0

Ich denke, Ihre Anforderung besteht darin, die Zeile mit dem spätesten Zeitstempel für jeden einzelnen Kalendertag in Ihrem Datumsbereich abzurufen. –

Antwort

0

Verwenden Sie Tabelle abgeleitet zusammen mit Sub-Abfrage

select * from mytable where Trackdate IN (
select max(date) from 
(
SELECT * FROM mytable WHERE TrackDate between DATE_SUB("2015-01-12 13:47:30", INTERVAL 7 DAY) AND "2015-01- 13:47:30" 
)tmp 
group by date(trackdate) 
) 
Verwandte Themen