mysql - MySQL 嵌套 Select BETWEEN 多行
问题描述
我有 2 个表:
表 1称为日历并包含所有日期和日期
示例:
---------------------
date | day
---------------------
2013-07-08 | Tuesday
2013-07-09 | Wednesday
所以..
表 2称为“事件”并具有事件开始日期和结束日期
示例:
-------------------------------------------
title | date | end_date
-------------------------------------------
eventweek | 2013-07-08 | 2013-07-14
等等
现在我需要选择这些日期之间的日子:
SELECT days
FROM calendar
WHERE date BETWEEN
(
SELECT date
FROM events
WHERE title LIKE %eventweek%)
AND
(
SELECT end_date
FROM events
WHERE title LIKE %eventweek%).
现在的问题是当有多个“eventweek”标题为这样的事件时:
-------------------------------------------
title | date | end_date
-------------------------------------------
eventweek | 2013-07-08 | 2013-07-14
eventweek | 2014-07-01 | 2014-07-13
当然我会得到“子查询返回超过 1 行”。
此示例中的预期结果是 2013-07-08 和 2013-07-14 之间的日子加上 2014-07-01 和 2014-07-13 的日子以及每个未来的“eventweek”标记条目。
顺便说一句,这将是一个表格视图,所以可能无法通过循环来解决。有任何想法吗?
非常感谢您的任何建议,我将尝试所有这些以查看更简单和更快的建议。
解决方案
我不认为之间是一个好的开始,这应该更好:
SELECT c.day
FROM events e
join calendar c on (c.date>=e.date and c.date<=e.end_date)
WHERE e.title = 'eventweek'
推荐阅读
- java - Spring中单元测试如何插入记录(无删除方法)
- ubuntu - Ubuntu 16.04 中的 Caffe 库在哪里?
- django - 无法从 '"/quiz/%d/api"%quiz_id' 解析剩余的 '%quiz_id'
- ios - AVMakeRect 在我使用约束时返回工作值
- c++ - c++:如何将用户输入作为函数参数?
- ios - AVAudioRecorder 和 wav 音频文件的音频数据文件偏移量
- node.js - 如何将 id 传递给路由器删除方法?
- c# - 如何使用 indexof 和 substring 和 string.format 在文本的特定位置添加随机数/文本?
- php - 我的 sql IN() 函数或 FIND_IN_SET 函数中允许的最大逗号分隔字符串
- mysql - 排序规则的非法混合 MYSQL