我真的不知道该如何查询该任务.
我需要为表中每条记录的第一行获取时间,但是每次当我有一组相同的结果时,都需要在它出现且信号等于1时获取第一条记录.
我不知道如何正确解释它,但我将举一个例子,您将明白我的意思.
记录:
ID| Time | Serial | Signal
1| 10:59| 12 | 1
2| 11:00| 12 | 1
3| 11:01| 12 | 1
4| 11:01| 13 | 1
5| 11:02| 12 | 0
6| 11:03| 12 | 0
7| 11:05| 13 | 1
8| 11:07| 12 | 1
所以我需要这个结果:
ID| Time | Serial | Signal
1| 10:59| 12 | 1
4| 11:01| 13 | 1
7| 11:05| 13 | 1
8| 11:07| 12 | 1
解决方法:
您的确切逻辑尚不清楚,根据我的收集,您正在寻找使信号为1的每一行的串行值从一次变为另一个.
可以使用变量跟踪上一行中的序列值(在下面的查询中为@t变量)来完成此操作.
SELECT ID, Time, `Serial`, `Signal`
FROM ( SELECT ID,
Time,
`Serial`,
`Signal`,
CASE WHEN `Serial` = @t THEN 0 ELSE 1 END AS IsNew,
@t:= `Serial`
FROM T,
(SELECT @t:=0) t2
ORDER BY Time
) t
WHERE IsNew = 1
AND `Signal` = 1