2017-06-28 30 views
0

Previous Solution for one ValueMySQL的:返回多個值,即使沒有結果

有沒有辦法返回多個NULL或「男」的值,如果我們有多個ID值的查詢?換句話說,如果一個表有一個日期時間「ID」,它是一個主鍵。它增加了一秒的滴答聲。其中一些秒(條目)丟失,並且一旦查詢了很大範圍的ID,您就會想返回'nan'或'empty'。

工作守則一個值:

SELECT ID FROM TABLE WHERE ID in ('2017-06-29 23:10:00') UNION ALL (SELECT 'nan') LIMIT 1 

努力實現多值動態查詢。在這個例子中,我查詢3點的ID,但列表可以增長到數千 - 非工作實例:

SELECT ID FROM TABLE WHERE ID in ('2017-06-29 23:10:00', '2017-06-29 23:10:01','2017-06-30 00:11:03') UNION ALL (SELECT 'nan') LIMIT 1 
+1

如果我理解正確,你有一個[SQL「間隙和孤島」](https://stackoverflow.com/questions/tagged/gaps-and-islands+sql)問題。這裏有許多問題涉及數據系列中的「缺失的日子」。你的問題基本上是一樣的,只是你缺少秒。 – pilcrow

+0

這是正確的。 – user7769718

+0

你可以顯示錶格內容和想要的結果嗎? – Barmar

回答

1

使用UNION合成表與所有你想匹配的ID,然後留下了加入這個真正的桌子。當表格中沒有匹配時,LEFT JOIN的列會產生NULL,您可以對此進行測試並顯示默認值。

SELECT IFNULL(t2.id, 'nan') AS id 
FROM (SELECT '2017-06-29 23:10:00' as id 
     UNION ALL 
     SELECT '2017-06-29 23:10:01' 
     UNION ALL 
     SELECT '2017-06-29 23:10:02') AS t1 
LEFT JOIN TABLE AS t2 ON t1.id = t2.id 

你如何自動化與所有的時間戳創建表的過程中看到What is the most straightforward way to pad empty dates in sql results (on either mysql or perl end)?

+0

謝謝,但我不確定這會做什麼。我會通過更多的澄清更新這個問題。 – user7769718

+0

所以你正在尋找多行,而不是多列? – Barmar

+0

我已經用不同的方法更新了答案。 – Barmar