选择具有时差的行和缺少具有默认值的行

时间:2017-06-01 10:15:49

标签: mysql sql

我已经在mysql中编写了查询来选择时间戳差为x秒的行。我有mysql sql文件here

如果您尝试结束,那么您可以看到时间戳2017-05-31 15:59:49只有channel_id的一行5. 我想显示channel_id的行8默认值为0,time_stamp值为2017-05-31 15:59:49如何实现此目标?

注意:我在sql小提琴上尝试了这个但是它给了我一些错误,所以我在google驱动器上发布了sql文件。

1 个答案:

答案 0 :(得分:1)

试试这个

Rextester Demo

select a.channel_id,a.time_stamp,
case when r.value is null then '0' else r.value end as value
from reading r
right join
(select * from 
    (select distinct channel_id  from reading) c
        cross join
     (select distinct time_stamp from reading) t
) a
on r.channel_id=a.channel_id
and r.time_stamp=a.time_stamp
order by a.time_stamp,a.channel_id;

说明:我们需要不同的channel_id和timestamp,需要交叉连接以派生一个表a,它将包含channel_id和time_stamp的所有组合。现在右键将主表与此表a和硬编码0连接,以获取缺失值。