mysql-如何从每个组仅使用SQL获得一个结果

我真的不知道该如何查询该任务.

我需要为表中每条记录的第一行获取时间,但是每次当我有一组相同的结果时,都需要在它出现且信号等于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

SQL Fiddle

上一篇:hive group by distinct区别以及性能比较


下一篇:sqlserver 去除重复的行数据