SELECT DRYL,DRYLA FROM t_table WHERE
DM =in('81#','71#','82#')
如上,发现它的执行顺序不是按照IN()里面的顺序查询的,哪位高手指点一下,这个执行的优先级是怎样的呢?~~?
DM =in('81#','71#','82#')
如上,发现它的执行顺序不是按照IN()里面的顺序查询的,哪位高手指点一下,这个执行的优先级是怎样的呢?~~?
解决方案 »
- 异常oracle.jdbc.driver.ScrollableResultSet.getCachedDatumValueAt
- 求助指导写一个oracle存储过程
- 如何删掉一个已有的数据库?
- 40个人上机学 Oracle,上机环境应该怎么搭?
- 表的问题
- win2000下安装oracle8i奇怪问题!!!
- 我只想用oracle作为后台数据库,没想成为DBA,懂这些够了吗?
- 请问在ORACLE中如何实现SELECT TOP 10 * FROM 表名
- TADOQuery
- 请问oracle 中pl/sql的语法帮助从那里可以找到呀
- VC中select语句的返回值获得
- 求解oracle 查询多行记录转换成一行显示问题
貌似你写错了吧,in前面不要=
SELECT DRYL,DRYLA FROM t_table WHERE DM in('81#','71#','82#') ;
这个不分什么优先级的问题,只要DM在集合中就行,('81#','71#','82#')这个只是一个DM值的集合,集合in运算没说顺序,只是匹配是否存在于集合中。
DM =in('81#','71#','82#') 等于去掉
只是在集合中找到有这条数据符合dm in的条件 没有顺序,跟你的记录中的dm'81#','71#','82#'这些集合的位置 要是检索到71 就会在 in('81#','71#','82#') 匹配
SELECT DRYL,DRYLA FROM t_table WHERE
DM ='81#' or DM='71#' or DM='82#'
正确的写法:
SELECT DRYL,DRYLA FROM t_table WHERE
DM in('81#','71#','82#') ;--去掉=
in中的合集不分前后,写前写后没有效率上的变化
SELECT DRYL AS "液量", DRYLA AS "油量", DRHS AS "含水"
FROM DBZER0321_02_V
WHERE dm in('81#','四区队','五区队','82#','71#','三区队','一区队','二区队');
in 中随便写的~结果如下
液量 油量 含水
---------- ---------- ----------
3917 703 82.1
14803 3795 74.4
4175 904 78.3
5735 1082 81.1
3842 723 81.2
2260 865 61.7
4175 904 78.3
3917 703 82.1
SELECT DRYL AS "液量", DRYLA AS "油量", DRHS AS "含水"
2 FROM DBZER0321_02_V
3 WHERE dm='81#';
结果:
液量 油量 含水
---------- ---------- ----------
14803 3795 74.4不是按in('81#','四区队','五区队','82#','71#','三区队','一区队','二区队')里面写的顺序走的~不然应该是
液量 油量 含水
3917 703 82.1 才对嘛~~~反正测试的结果是按照in()中的排序走的~因为需要BULK COLLECT INTO数组里面,所以需要知道对应的字段~~~~
O(∩_∩)O谢谢大家了~~