Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql从序列中选择不同的值_Mysql_Sql_Group By_Distinct - Fatal编程技术网

Mysql从序列中选择不同的值

Mysql从序列中选择不同的值,mysql,sql,group-by,distinct,Mysql,Sql,Group By,Distinct,我有一个类似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:

我有一个类似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
我需要选择(speed!=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 如果我使用group by with Lat,则不会选择Lon last记录。但我需要它。 (问题是,如果车辆在另一时间返回相同的纬度和经度,无论是行驶还是怠速) 任何帮助都将不胜感激。

您可以试试这个

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

如果速度为非零但有重复行(即两行13、2、23),则不确定您想要什么?不考虑上述要点,您可以使用
联合
(感谢@echo\u me的帮助)获得预期的结果


为什么
DISTINCT
不起作用?通过这个例子,它将为您提供所需的结果。请给出一个
DISTINCT
不起作用的示例。您能更新示例吗?
DISTINCT
对给定的样本测试数据有效,但如果测试数据包括行(0,3,24)和(0,4,25)而不是(0,3,24)和(0,3,24),则不起作用。OP没有明确说明问题域。如果(人们可能会假设)这些行是连续的,并且描述了移动对象的速度和位置,那么也可以安全地假设速度为0的连续行将保持相同的位置。不过这是一个假设,如果是这样的话,那么问题就出在‘如何使这些行按正确的顺序排列’@lintu:你说你有“一系列记录”,但我看不到可用于排序的列。@ypercube。。相同值的系列(速度为0时)。。本例中有两个系列。如果它误导了你,我就错了。这几乎与表1中的
选择不同的速度,lat为Lat1,Lon为Lon1相同。唯一的区别是,你的查询不会包括
速度
为空的行(如果有的话)。@AndriyM:OP说他试过使用
DISTINCT
Group By
,没有看到他的所有数据,这是一种不同的方法,是的,我理解
UNION
到底做了
DISTINCT
所做的事情。。。
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
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