MS Access技术咨询:如何对两个字段各设置两个不同筛选值
修正后的MS Access SQL语句及错误说明
原语句的核心错误
- SQL语法顺序错误:
FROM plants必须放在WHERE子句之前,标准SELECT语句结构是SELECT 字段 FROM 表 WHERE 条件。 - 条件逻辑不完整:
or "*def*"这种写法缺少关联字段,数据库无法判断要匹配哪个列,每个模糊匹配都需要明确指定对应字段(比如plants.name like "*def*")。 - 重复使用
WHERE关键字:一个SELECT语句只能有一个WHERE起始条件,不能多次声明。
正确的SQL写法
根据需求,需要同时满足name字段匹配两种模式之一和source字段匹配两种模式之一,用括号明确分组条件,避免逻辑歧义:
SELECT * FROM plants WHERE (plants.name LIKE "abc*" OR plants.name LIKE "*def*") AND (plants.source LIKE "123*" OR plants.source LIKE "*456*");
补充说明
如果需求是name满足条件 或者 source满足条件(而非同时满足),只需把AND换成OR即可:
SELECT * FROM plants WHERE (plants.name LIKE "abc*" OR plants.name LIKE "*def*") OR (plants.source LIKE "123*" OR plants.source LIKE "*456*");
内容的提问来源于stack exchange,提问作者user10127073
相关产品推荐
相关产品推荐

