3

我有一个 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 的记录)+(速度 == 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 的 group by,则不会选择最后一条记录。但我需要它。(问题是如果车辆在另一个时间回到相同的纬度和经度,无论它是移动还是空闲)任何帮助将不胜感激。

4

2 回答 2

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使用分组零记录演示

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
于 2013-02-08T12:38:03.687 回答
1

你可以试试这个

   SELECT Speed , lat as Lat1 , Lon as Lon1 
   FROM Table1
   GROUP BY Lat

SQL 演示在这里

于 2013-02-08T12:22:57.537 回答