You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL的WHERE子句中精准查询指定跨年月份的数据?

解决SQL查询特定年月组合的问题

原语句的问题在于,year IN ('2022', '2023') AND month IN ('12', '1') 会匹配这两年里所有的1月和12月,包括2022年1月、2023年12月,不符合你要仅获取2022年12月和2023年1月的需求。可以用以下几种方式修改:

方法一:精确配对组合查询

直接用OR把两个目标年月的精确条件组合起来,逻辑清晰且兼容性强:

SELECT month, year, [...] from table 
WHERE other condition
AND (
    (year = '2022' AND month = '12')
    OR 
    (year = '2023' AND month = '1')
)

方法二:利用日期字段范围查询(如果表中有完整日期字段)

如果你的表存在类似date_column的完整日期字段,直接用日期范围筛选更简洁,还能利用日期索引提升性能:

SELECT month, year, [...] from table 
WHERE other condition
AND date_column BETWEEN '2022-12-01' AND '2023-01-31'

方法三:元组匹配查询(部分数据库支持)

像PostgreSQL、MySQL 8.0+等数据库支持元组匹配写法,语法更紧凑:

SELECT month, year, [...] from table 
WHERE other condition
AND (year, month) IN (('2022', '12'), ('2023', '1'))

内容的提问来源于stack exchange,提问作者LennartPfeiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:52:41