2013-06-27 2 views
1

У меня есть данные таблицы с несколькими imei. Я хочу узнать все max (даты) всех imei. Я пишу этот вопрос:Узнать максимальные даты для всех пользователей в той же таблице

SELECT * 
from data 
where gpsdatetime=(
     select max(gpsdatetime) 
     from data) 
    AND imei in("+imei_string+"); 

Но это получает все данные выбранного IMEI, а затем выбирает только один дату макс из всех данных.

Я хочу узнать все max (даты) всех imei.

ответ

0

Попробуйте это:

SELECT imei, MAX(gpsdatetime) 
FROM data 
GROUP BY imei 

Этот запрос использует GROUP BY clause.

Demo on SQLFiddle.

Если вы хотите, чтобы все строки (IMEI даже дубликаты), а затем использовать следующий запрос:

SELECT a.imei, b.gpsdatetime 
FROM data a 
JOIN (
    SELECT imei, MAX(gpsdatetime) as gpsdatetime 
    FROM data 
    GROUP BY imei 
) b 
ON a.imei = b.imei 

Demo on SQLFiddle.

+0

Я хочу, чтобы выбрать все – user2500442

+0

Этот запрос даст вам все 'imei' номер и эти цифры будут уникальными в результате набора записей , Против каждого номера «imei» у вас есть соответствующая дата MAX. –

+0

Я пробовал. Он дает 1 imei с max (date) – user2500442

0

Я думаю, что вы ищете для этого
SELECT * From data D
where gpsdatetime in (select max(gpsdatetime) from Data group by imei)
AND imei in("+imei_string+");