2016-08-10 2 views
0

에서 최신 정보를 얻고 나는이 열이 데이터베이스를 가지고있다.MySQL은 매개 변수 테이블

id object_id name value  timestamp 
1  20   event data   2016-08-10 17:00:00 
2  20   event hist   2016-08-10 18:00:00 
3  20   event data   2016-08-10 19:00:00 
4  20   event hist   2016-08-10 16:00:00 
5  20   source device  2016-08-10 17:00:00 
6  20   source device  2016-08-10 18:00:00 
7  20   source webservice 2016-08-10 19:00:00 
8  20   source webservice 2016-08-10 16:00:00 

그래서 내가 예를 2016년 8월 10일에 대한 19시 0분 8초에서 실제 있던 데이터를 것입니다 : 모든 들어 내가 기록을 가지고 것으로, object_id

3  20   event data   2016-08-10 19:00:00 
7  20   source webservice 2016-08-10 19:00:00 

나는 전까지 지금이 쿼리를 사용 최대 (ID)가 항상 최신 정보를했기 때문에

SELECT * 
FROM table st1 
INNER JOIN (SELECT max(id) as id 
      FROM table 
      WHERE object_id = 20 AND timestamp <= '2016-08-10 19:00:08' 
      GROUP BY `name`) st2 
ON st2.id = st1.id 
WHERE object_id = 20 

은 좋은 일을하지만, 지금은 ... 더 이상하지

이 문제를 해결하기 위해 어떤 쿼리를 사용해야합니까? 당신은 타임 스탬프로 주문할 수

+0

MCVE - http://stackoverflow.com/help/mcve – Strawberry

답변

0

:

ORDER BY `timestamp` DESC 

그리고 조건을 추가 할 경우 타임 스탬프 시간 전에 말보다 최신해야합니다. UNIX_TIMESTAMP()는이를 조작 할 수있는 정수로 변환합니다.

+0

이것은 예상 한 결과를 제공하지 않는 것 같습니다. SELECT 테이블 ST1 INNER JOIN (표 이드 맥스 (ID)를 선택하는 것은 한 object_id = 20 AND 소인 <= '2016년 8월 10일에게 19시 0분 8초'BY GROUP 주문 name' FROM * 타임 스탬프 내림차순) st2 ON st2.id = st1.id where object_id = 20 한 시간 차이는 여기에 단지 예입니다. – TwinsIT