IN 函数 和 and 在where条件中联合使用的注意事项:
来源:互联网 发布:淘宝开店保证金交不了 编辑:程序博客网 时间:2024/04/30 10:41
IN 函数一般在 where 条件中使用。使用的方法为:
SELECT columns
FROM tables
WHERE column1 in (value1, value2, .... value_n);
当where 条件中 IN 函数 和 and 一起使用的时候,需要特别的注意:
先思考一下下列两个语句的查询结果是否一样
SELECT columns FROM tables WHERE column1 in (value1, value2, .... value_n) AND column2 ='column2';
和
SELECT columns FROM tables WHEREcolumn2 ='column2' AND column1 in (value1, value2, .... value_n);
有的人认为:两个条件取并集,与条件的先后关系没有关系,结果应该是一样的。
这种想法是错误的,上面两个语句的结果是不一样的。
IN函数的实质是什么? 一堆OR条件组合的简略形式。
clumn1 =value1 OR column1=value2 OR…… OR column = value_n 等于 column1 in (value1, value2, .... value_n);
说白了,IN函数只是有助于减少OR条件的复合使用。
当把上述两个语句还原:
SELECT columns FROM tables
WHERE clumn1 =value1 OR column1=value2 OR…… ORcolumn = value_n AND column2 ='column2';
和
SELECT columns FROM tables
WHERE column2 ='column2' AND clumn1 =value1 OR column1=value2 OR…… OR column = value_n;
根据 OR 和 AND 的执行顺序,先执行AND,然后执行OR。
第一个语句先执行column = value_n AND column2 ='column2';获取的值和前面的条件取或值。
第二个语句先执行column2 ='column2' AND clumn1 =value1;获取的值和后面的条件取或值。
column2 ='column2' AND clumn1 =value1 和 column2 ='column2' AND clumn1 =value1 获取的值肯定不同。
所以要实现取 IN函数 和其他条件的并集,只需要在 IN函数 外面添加"()"即可。下面的查询语句的结果是一样的。
SELECT columns FROM tables WHERE(column1 in (value1, value2, .... value_n)) AND column2 ='column2';
和
SELECT columns FROM tables WHERE column2 ='column2' AND(column1 in (value1, value2, .... value_n));
- IN 函数 和 and 在where条件中联合使用的注意事项:
- ibatis中where后面or 和 and 的联合使用
- 联合查询时过滤条件放在ON之后和放在WHERE之后的区别
- where 条件中 使用 instr 替代 in
- 尽可能避免在where条件或者join时的on条件中使用case函数(T-SQL)
- 谈谈where条件中函数的使用(deterministic)
- 关于C#中关于List.where中过滤条件的使用注意事项
- 关于C#中关于List.where中过滤条件的使用注意事项--笔记
- where查询条件的指定,between and,in,like
- 用MD5函数处理oracle数据库中clob字段在where条件或者group中使用
- ThinkPHP中CURD where的使用注意事项
- SQL: where条件中AND、OR运算符的组合使用
- sql: where条件中AND、OR运算符的组合使用
- mysql中left join on后面and和where条件查询的差异
- static 在函数中使用的注意事项
- 存储过程中动态条件的添加 where条件 in条件中字符串参数
- pl/sql中在where in()子句里怎么使用字符串变量来传递查询条件?
- SQLServer2008 在where条件中使用CASE WHEN
- HDU 5062 Beautiful Palindrome Number(数学题)
- 计蒜客 挑战难题 第16题:爬楼梯
- C++ 虚函数
- 使用 Struts 2 开发 RESTful 服务
- Stanford机器学习---第十讲. 数据降维
- IN 函数 和 and 在where条件中联合使用的注意事项:
- AT+CNMI
- 最近公共祖先 (Lowest common ancestor)
- Java探索之旅(5)——数组
- java中的字符创比较
- C语言编程_指针变量的定义和使用
- gdb十分钟教程
- 剑指offer面试题6--重建二叉树
- 5.6 第五章小结