我有一个类似
的mysql表 Speed Lat Lon TimeStamp
12 1 22 2012-02-03 00:00:05
13 2 23 2012-02-03 00:00:10
0 3 24 2012-02-03 00:00:15
0 3 24 2012-02-03 00:00:20
14 4 25 2012-02-03 00:00:25
0 5 26 2012-02-03 00:00:30
0 5 26 2012-02-03 00:00:35
0 5 26 2012-02-03 00:00:40
5 6 27 2012-02-03 00:00:45
0 6 27 2012-02-03 00:00:50
我需要选择(所有记录的速度!= 0)+(一系列记录中的一条记录,其中speed == 0)。 即我会期待像
这样的东西 Speed Lat1 Lat2 Timestamp
12 1 22 2012-02-03 00:00:05
13 2 23 2012-02-03 00:00:10
0 3 24 2012-02-03 00:00:15
14 4 25 2012-02-03 00:00:25
0 5 26 2012-02-03 00:00:30
5 6 27 2012-02-03 00:00:45
0 6 27 2012-02-03 00:00:45
我尝试对不同的列使用distinct和group by ..不工作.. 请帮我查询..
编辑:
我添加了时间戳字段和另外一个用于ORDER BY的记录 如果我使用Lat的组,则不会选择Lon的最后一条记录。但我需要它。 (问题是如果车辆在另一个时间回到相同的纬度和经度,无论是移动还是闲置) 任何帮助将不胜感激..
答案 0 :(得分:2)
如果速度非零但重复行(即两行13,2,23),不确定您想要什么?如果不考虑上述观点,您可以使用UNION
DEMO获得预期结果(感谢@echo_me为小提琴)
Select Speed , lat as Lat1 , Lon as Lon1
From Table1 where speed <> 0
UNION
Select Speed , lat as Lat1 , Lon as Lon1
From Table1 where speed = 0
Order by lat1
或 如果您想要重复的非零记录,则UINON ALL
可以使用分组零记录DEMO
Select Speed , lat as Lat1 , Lon as Lon1
From Table1 where speed <> 0
UNION ALL
Select Speed , lat as Lat1 , Lon as Lon1
From Table1 where speed = 0
Group by speed,lat1,lon1
Order by lat1
答案 1 :(得分:1)