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

MySQL使用BETWEEN子句查询返回错误结果的问题求助

解决MySQL查询逻辑错误的问题

嘿,你这明显是踩了SQL逻辑运算符优先级的坑啦!让我给你拆解一下问题出在哪:

你的原SQL语句:

SELECT title,release_year FROM FILMS WHERE release_year BETWEEN 1990 AND 2000 AND budget > 1000000000 AND language ='Spanish' OR language = 'French';

由于SQL里AND的优先级比OR高,这个语句的实际执行逻辑是:

(release_year在1990~2000之间 AND 预算超10亿 AND 语言是西班牙语) OR (语言是法语)

这就导致所有法语影片不管年份和预算都会被返回,自然就出现了“返回全部数据”的问题——哪怕你给release_year的条件加了括号,也没解决核心的OR优先级问题。

正确的写法有两种:

方法1:给语言的OR条件加括号

把语言的两个选项括起来,让它们作为一个整体和前面的年份、预算条件做AND判断:

SELECT title, release_year 
FROM FILMS 
WHERE release_year BETWEEN 1990 AND 2000 
  AND budget > 1000000000 
  AND (language = 'Spanish' OR language = 'French');

方法2:用IN替代OR(更简洁)

如果是判断多个等值条件,用IN会比OR更清晰,可读性更好:

SELECT title, release_year 
FROM FILMS 
WHERE release_year BETWEEN 1990 AND 2000 
  AND budget > 1000000000 
  AND language IN ('Spanish', 'French');

这样修改后,查询就会严格筛选出1990-2000年、预算超过10亿、语言是西班牙语或法语的影片,符合你的预期啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:48:24