MySQL Query消除重复但仅相互邻接

时间:2011-03-25 00:47:21

标签: mysql

我有以下查询..

    SELECT Flights.flightno, 
    Flights.timestamp, 
    Flights.route
FROM Flights
WHERE Flights.adshex = '400662' 
ORDER BY Flights.timestamp DESC

返回以下屏幕截图。 results

但是我不能使用一个简单的组,例如BCS6515将在列表中稍后出现,我只想“压缩”此列表中彼此相邻的行。

输出示例(注意BCS6515在此列表中两次,因为它们在第一个查询中不相邻) enter image description here

这就是GROUP BY flightno无法使用的原因。

2 个答案:

答案 0 :(得分:2)

我认为在SQL中没有一个很好的方法可以帮助你。充其量,我认为它需要一个丑陋且效率低下的子查询。你有两个选择可能最终会有更好的表现。

一种方法是自己编写逻辑来修剪结果。 (已添加:) 如果您想在数据库服务器端处理它,可以使用procedure clause的select语句来完成。

另一种方法是使用表中的其他信息或为此目的向表中添加新信息。您目前在表中是否有针对多个BCS6515行的每个实例的不同值的内容?

如果没有,如果我对您的表格中的数据做出正确的假设,那么每天只有一个航班号码相同,但航班号重复用于表示具有相同开始/结束的航班和其他日子的时间。 (例如,从NRT到DTW的上午10点是每天相同的航班号)。如果timestamp始终是同一天,那么您可以在DAY(timestamp)中使用GROUP BY。但是,这不允许通宵飞行。因此,您可能需要诸如出发日期之类的东西来分组,以将所有行标识为属于同一物理航班。

答案 1 :(得分:0)

GROUP BY不起作用,因为2个BCS6515记录的'timestamp'值不同。

仅在以下情况下才有效:

SELECT Flights.flightno, 
    Flights.route
FROM Flights
WHERE Flights.adshex = '400662' 
GROUP BY (Flights.flightno)