从一行返回多个结果

时间:2012-10-30 07:29:45

标签: mysql

我有一组类似于以下内容的MySQL数据:

| id | type       | start               | end                 |
===============================================================
|  1 |      event | 2011-11-01T00:00:00 | 2012-01-02T00:00:00 |
|  2 |    showing | 2012-11-04T00:00:00 | 2012-11-04T00:00:00 |
|  3 | conference | 2012-12-01T00:00:00 | 2012-12-04T00:00:00 |
|  4 |     event2 | 2012-01-01T00:00:00 | 2012-01-01T00:00:00 |

我想检索特定日期范围内的事件,但我还想为每个时间跨度超过一天的行返回单个结果。实现这一目标的最佳方法是什么?

编辑:换句话说,我想从事件行返回两个结果,来自会议行的四个结果和一个结果所有其他人的结果。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

试试这句话:

SELECT * FROM table
WHERE START BETWEEN '2012-01-01' AND '2012-01-03'
OR END BETWEEN '2012-01-01' AND '2012-01-03'    
OR TO_DAYS(end) - TO_DAYS(start) > 1

我已创建它以便在SQL Fiddle

上进行测试