2017-06-28 29 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