mysql在localhost和在线服务器上的不同查询结果

时间:2016-09-30 03:33:35

标签: mysql

我有一个名为tblusermesin的表,并且有这样的数据

Id  id_mesin  id_io       waktu           value
 1   m001     io001   2016-09-27 17:08:01   0
 2   m001     io002   2016-09-27 17:09:39   0
 3   m001     io002   2016-09-27 17:09:59   1
 4   m001     io001   2016-09-27 17:10:00   1
 5   m001     io001   2016-09-28 10:03:10   0
 6   m001     io001   2016-09-28 10:03:11   1
 7   m001     io001   2016-09-28 10:03:12   0

我想获取每个io_id的最后数据。我使用查询

select  id_mesin,id_io,waktu,value FROM 
(select  id_mesin,id_io,waktu,value from tblusermesin  order by waktu desc)a
group by id_io;

在localhost中,结果是正确的,但是当我在在线服务器上使用此查询时,结果是不同的。

出了什么问题,让这件事发生?请帮我。谢谢

1 个答案:

答案 0 :(得分:0)

查询有什么问题。使用该查询,结果集被认为是正确的,结果集都没有比另一个更正确。

waktu返回的值是 indeterminate 。无法保证waktu返回的值将来自组中的任何特定行,并不保证它将是最高值或最低值。

其他关系数据库会在您的查询中引发错误,类似于“SELECT列表中的非聚合表达式不在GROUP BY中”。 (我们可以通过在sql_mode中包含ONLY_FULL_GROUP_BY来使MySQL表现出类似(和更标准)的行为。)

MySQL允许处理查询,因为GROUP BY的非标准MySQL特定扩展。启用该扩展(默认情况下),MySQL可以从组中的任何行返回waktu的值。

如果要为组返回waktu的最高值,请使用MAX()聚合函数。

  SELECT t.foo
       , MAX(t.waktu)
    FROM sharkbait t
    GROUP BY t.foo