我有一个名为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中,结果是正确的,但是当我在在线服务器上使用此查询时,结果是不同的。
出了什么问题,让这件事发生?请帮我。谢谢
答案 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