Mysql选择月份包括在2个月内

时间:2013-10-21 10:25:18

标签: mysql

我正在寻找一个简单的查询,将一个月包含在2个月内。我解释一下:

我有一张

的桌子
id | month1 | month2

表示从第1个月到第2个月的ID是正常的(字段是月份数)。例如:

145 | 8 | 2

意思是:从8月到2月,id 2是可以的

现在,当我选择一个月时,我正在寻找一个简单的查询来选择id。例如:

对于3月份(所以数字3),我们关注哪个?

我用很多AND和OR进行了很长时间的查询,但它非常复杂,我确信有一种简单的方法可以实现它。难点是十二月之后X和一个月之间的ID ......

这样的查询
SELECT * FROM `table` WHERE 2 between month(month1) and month(month2)

请问好吗? 感谢

2 个答案:

答案 0 :(得分:1)

您想要返回给定月份内有效的所有记录:

SELECT *
FROM `table`
WHERE CASE WHEN month1 < month2
           THEN (month1 <= 3 AND month2 >= 3)
      ELSE (month1 <= 3)
           OR
           (month1 > 3 AND month2 >= 3)
      END CASE

虽然上面的查询尚未经过测试,但我会尝试这些方法。 (我似乎无法继续使用sqlfiddle ......)

CASE测试第一个月是否小于第二个月,在这种情况下很容易:您只需测试给定的数字在month1month2之间。如果不是,您应该提供两个选项:要么您的选择大于month1,所以它应该总是返回true;或者它小于month1,但在这种情况下它应该大于或等于month2

答案 1 :(得分:0)

以下查询将输出两个月内的所有行。

SELECT *,COUNT(1)AS amountOfMonths FROM table GROUP BY month HAVING amountOfMonths = 2