MySQL:即使没有结果,也返回多个值

时间:2017-06-28 22:06:06

标签: mysql sql

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

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)?,了解如何使用所有时间戳自动创建表的过程。