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

MySQL查询能否基于两列为IN子句定义数值范围?

MySQL中基于checkin和checkout列定义范围查询的正确写法

首先明确:你提到的两种写法在MySQL里都是无效的,没法直接使用。

先拆解问题所在:

  • 第一种写法WHERE checkin, checkout IN (10..15);:MySQL不支持10..15这种范围简写,且多列搭配IN时,IN后必须是成对的行值集合,而非单个范围。
  • 第二种写法WHERE checkin and checkout IN (10..15);:逻辑与语法都有问题,checkin单独放在AND前会被当作布尔值判断(非零即真),同时10..15的写法也不被MySQL识别,你实际想表达的应该是checkin和checkout都落在10到15之间。

如果你要查询checkin和checkout都处于10到15(包含边界)的记录,正确写法有两种:

方法1:使用BETWEEN运算符

SELECT hotel, destination 
FROM mytable 
WHERE checkin BETWEEN 10 AND 15
  AND checkout BETWEEN 10 AND 15;

方法2:直接用比较运算符

SELECT hotel, destination 
FROM mytable 
WHERE checkin >= 10 AND checkin <= 15
  AND checkout >= 10 AND checkout <= 15;

另外补充下多列IN的正确用法:如果是要匹配checkin和checkout的特定值组合(比如(10,12)、(13,15)),写法如下,但这和你要的范围查询不是同一场景:

SELECT hotel, destination 
FROM mytable 
WHERE (checkin, checkout) IN ((10,12), (13,15));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:33:20