2017-06-01 27 views
1

我已經在mysql中寫入查詢以選擇時間戳差異爲x秒的行。我有mysql的sql文件here選擇具有時間差和缺省行的行,並使用默認值

如果你試圖在你的結束,那麼你可以看到,在時間戳2017-05-31 15:59:49只有1排channel_id 5. 我想顯示一行channel_id 8與0和time_stamp默認值值爲2017-05-31 15:59:49我該如何做到這一點?

注意:我已經嘗試過這對sql小提琴,但它給了我一些錯誤,所以我已經在谷歌驅動器上發佈的SQL文件。

+0

嘗試在rextester.com上發佈腳本和查詢並分享網址,因爲谷歌驅動器無法從某些位置訪問(如我的辦公室) – Utsav

+1

@Utsav: - 這是[link] http://rextester.com/BJT68575 –

+0

和通道ID始終是'5'和'8'? – Utsav

回答

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和時間戳,需要CROSS JOIN導出表a這將有CHANNEL_ID和TIME_STAMP的所有組合。現在右鍵聯合主表格a和硬編碼0缺失值。

+0

我每2秒鐘顯示一次記錄。那麼我試圖得到2秒的延遲。你的答案完整填補了缺失的部分。 –

+0

從樣本中不太清楚。你能用兩種情況創建一個行數很少的小樣本,並給出你的預期輸出。 – Utsav

+0

在上面的rextester鏈接中,如果向下滾動並在底部,我寫入了select語句,選擇時間差爲2秒的行。 –