如何解决条件where子句mysql
| 我想在我的MySQL表中找到一个特定的时间段。 我想找到那个时期 1.从过去开始(cursusperiode_van < now()
)
2.至少持续4周(cursusperiode_tot - INTERVAL 28 DAY > now()
)
3.如果我找不到这个,我想找到一个在这个之后第一个开始的那个(cursusperiode_van > now() order by cursusperiode_van asc limit 1
)。
期限不重叠,至少不超过1天。
假设我有
id:1 - period: 1 jan 2011 to 1 aug 2011
id:2 - period: 1 aug 2011 to 31 dec 2011
如果我在7月1日查询该数据库,我想找到id 1
,如果我在7月23日查询,我想找到id 2
。
可能不相关,但是此查询将嵌入到另一个查询中,例如
select * from cursus where cursus_periode_id in (
select cursusperiode_id from cursusperiode_id where ...[panic!] ...
) and so on
我尝试使用IFNULL,CASE,但似乎无法解决这个问题。如何将这两个粘贴在一起?
任何提示或帮助表示赞赏。谢谢。
解决方法
您可以对两个查询进行“ 7”个查询,并添加一个虚拟列以帮助排序并保留找到的第一个查询。
SQL语句
SELECT c1.*
FROM cursus c1
INNER JOIN (
SELECT 1 AS Dummy,cursusperiode_id
FROM cursusperiode_id
WHERE cursusperiode_tot - INTERVAL 28 DAY > now()
UNION ALL
SELECT 2 AS Dummy,cursusperiode_id
FROM cursusperiode_id
WHERE cursusperiode_van > now()
) c2 ON c2.cursusperiod_id = c1.cursusperiod_id
ORDER BY
c2.Dummy,c1.cursusperiode_van ASC
LIMIT 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。