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

两段SQL查询语句差异咨询:无报错但返回结果不同的原因

两段SQL查询的核心差异分析

第一段SQL的逻辑错误

第一段的WHERE子句写法存在严重逻辑问题:

SELECT DISTINCT winery
FROM winemag_p1
WHERE LOWER(description) LIKE '%plum%' OR '%chery%' OR '%rose%' OR '%hazelnut%'
ORDER BY winery

这里OR后面直接跟'%chery%'这类字符串,在SQL中非空字符串会被隐式判定为布尔值TRUE。所以整个WHERE条件等价于:
LOWER(description) LIKE '%plum%' OR TRUE OR TRUE OR TRUE
最终结果是所有行都会被匹配,返回的是表中全部去重后的winery,完全没起到筛选关键词的作用。

第二段SQL的正确逻辑

第二段的WHERE子句是标准的多条件筛选写法:

SELECT DISTINCT winery
FROM winemag_p1
WHERE LOWER(description) LIKE '%plum%'
   or LOWER(description) LIKE '%cherry%'
   or LOWER(description) LIKE '%rose%'
   or LOWER(description) LIKE '%hazelnut%'
ORDER BY winery

每个OR都对应完整的匹配条件,只有当description转小写后包含plum、cherry、rose、hazelnut中任意一个关键词时,该行才会被筛选出来,返回的是符合关键词条件的去重winery。

另外补充:第一段里的chery是拼写错误,第二段是正确的cherry,但这不是导致结果差异的核心原因,核心是OR条件的语法逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:25:23