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

Mysql 选择具有时差的行和缺少具有默认值的行,mysql,sql,Mysql,Sql,我已经在mysql中编写了查询,以选择时间戳差为x秒的行。我有mysql sql文件 如果您在自己的位置尝试,那么您可以看到,在时间戳2017-05-31 15:59:49处,只有一行频道id5我想显示默认值为0且时间戳值为2017-05-31 15:59:49的频道id8的行 注意:我在sql fiddle上试过这个,但它给了我一些错误,所以我在google drive上发布了sql文件。试试这个 说明:我们需要不同的通道id和时间戳,并且需要交叉连接来派生一个表a,该表将包含通道id和时间

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

如果您在自己的位置尝试,那么您可以看到,在时间戳2017-05-31 15:59:49处,只有一行
频道id
5我想显示默认值为0且
时间戳
值为
2017-05-31 15:59:49
频道id
8的行

注意:我在sql fiddle上试过这个,但它给了我一些错误,所以我在google drive上发布了sql文件。

试试这个


说明:我们需要不同的通道id和时间戳,并且需要交叉连接来派生一个表
a
,该表将包含通道id和时间戳的所有组合。现在,右键将主表与此表
a
和硬代码
0
连接以查找缺少的值。

尝试在rextester.com上发布脚本和查询,并共享URL,因为无法从某些位置访问google drive(如我的办公室)@Utsav:-这是[链接]频道id总是
5
8
?@Utsav:不,这取决于具体情况。用户也可以选择其他频道。因此,如果有另一行的频道是9,那么您需要为所有时间戳的频道9创建一条记录?我每2秒显示一次记录。嗯,我正试图得到2秒的延迟。你的答案完全填补了缺失的部分。从样本中看不太清楚。您能否创建一个小样本,在两种情况下都有几行,并给出您的预期输出。在上面的rextester链接中,如果您向下滚动,我在底部编写了select语句,用于选择时差为2秒的行。
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;