Previous Solution for one Value
有没有办法返回多个NULL或' nan'如果我们有一个具有多个ID值的查询?换句话说,如果一个表具有日期时间" ID"这是一个主键。它以1秒的刻度递增。其中一些秒(条目)丢失,你想要返回' nan'或者“空”'一旦查询了大量的ID。
一个值的工作代码:
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
答案 0 :(得分: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)?,了解如何使用所有时间戳自动创建表的过程。