2016-08-03 84 views
0

嗨,我想选择一个表格按日期desc比gruoup由smth。起初phpmyadmin给出了一个错误(sql_mode = only_full_group_by),我通过从my.cnf中删除该标志来修复它,并且我不知道这个修复是否适合长期使用,我在某处使用此修复可以获得不需要的结果。我试过**select * from (select * from log order by date desc) tmp group by imei**,但结果是从最早的日期,而不是从最新的日期,它给了我从第一个ID不是从最后一个imei。Mysql select date by desc then group by column

+0

'select * from(select * from log order by date desc)tmp group by imei'和'select * from(select * from log order by date)tmp group by imei' –

+0

我现在试过了'select * from(select * from date order by date desc limit 100)tmp group by imei'并且它正在工作,但我不想限制结果 –

回答

0

对于分组结果,如果您订购了输入,则无关紧要。如果我正确解释你的问题,你想获得每个imei的最新日志条目。你将不得不做这样的事情:

SELECT l1.* 
    FROM logs as l1 
    LEFT OUTER JOIN logs as l2 
    ON l1.imei = l2.imei 
    AND l1.date < l2.date 
    WHERE l2.date IS NULL 

,你基本上是要求每个日志条目(L1),对于没有日志条目(L2)具有相同IMEI存在,但更大的日期。

如果你只是想知道当每个IMEI最后的日志条目,这将是不够的:

SELECT imei, MAX(date) 
    FROM log 
    GROUP BY imei 
+0

我已经建立了d你的第一个命令,但它需要很长的时间,我不会收到一个结果,它只是停留在加载。我想要做的只是你做了第二步命令,但我想选择所有列不只是imei和日期 –

+0

我已经删除了哪里l2.date为空,但它给了我表中的所有数据不唯一数据由imei –

+0

如果结果需要很长时间,则应在imei和日期列上添加索引。 当您删除“WHERE l2.date IS NULL”部分时,您会要求输入所有条目,这就是您会得到的。 – seven77

0

SELECT * FROM日志WHERE ID IN(SELECT MAX(ID)从IMEI日志组)