我已经在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文件。
答案 0 :(得分:1)
试试这个
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
连接,以获取缺失值。