如何实现按国家条件筛选对应seq_no值的SQL查询
你的SQL写法不可行,正确写法如下
你的语句存在两个问题:
- SQL的WHERE子句不能用
IF...THEN...ENDIF这种流程控制语法,这是存储过程/自定义函数里的语法,不适用于查询语句的条件判断。 IF(country = 'USA' OR 'Canada')逻辑错误,OR两侧必须是完整的条件表达式,应该写成country = 'USA' OR country = 'Canada',单独的'Canada'会被当作布尔值处理,不符合需求。
推荐两种正确写法:
写法一:使用CASE表达式
SELECT language FROM table WHERE seq_no = CASE WHEN country IN ('USA', 'Canada') THEN '2' ELSE '1' END;
写法二:直接组合逻辑条件(性能更优)
SELECT language FROM table WHERE (country IN ('USA', 'Canada') AND seq_no = '2') OR (country NOT IN ('USA', 'Canada') AND seq_no = '1');
注意:如果
seq_no是数值类型,去掉语句中的单引号,直接写2和1即可。
内容的提问来源于stack exchange,提问作者Tal1992
相关产品推荐
相关产品推荐

