我有一张这样的表:
ID month year content
1 4 2013 xxxxx
2 5 2013 yyyyy
3 6 2013 zzzzz
4 8 2014 fffff
我想根据年份和月份来查询它。
我有这样的查询:
SELECT * FROM UPP
WHERE ( month = '4' AND year = '2013' )
AND ( month = '6' AND year = '2013' )
该查询运行但不返回任何结果。任何人都可以帮我修复此查询吗?
注意:月份和年份列是整数。
答案 0 :(得分:3)
为什么不使用正确的数据类型?
失败:
SELECT * FROM UPP WHERE (year=2013) AND (month BETWEEN 4 AND 6);
这是解决这个问题的最简单方法。
修改
SQL Fiddle供参考。
答案 1 :(得分:0)
永远不会有任何行,其中month = 4和month = 6这是您的查询所要求的。添加这样的括号不会改变AND行为,因为你似乎想要它们,所以你要求WHERE year=2013 AND month=4 AND month=6
。
您可以通过多种方式询问您似乎想要的东西,例如:
WHERE (year=2013 AND month=4) OR (year=2013 AND month=6)
或
WHERE year=2013 AND (month=4 OR month=6)
或
WHERE year=2013 AND month IN (4,6)
如果你想要全范围(整个季度,第4,5和6个月不仅仅是第4和第6个月,那么swasheck的建议可能是最明确的方式,但如果日期范围跨越边界,这将会下降如果您需要进行完全灵活的远程查询(“截至2013年2月的六个月”等等),那么您可能需要重新考虑表格结构,以便更轻松/有效地支持该表格。