貌似你写错了吧,in前面不要= SELECT DRYL,DRYLA FROM t_table WHERE DM in('81#','71#','82#') ; 这个不分什么优先级的问题,只要DM在集合中就行,('81#','71#','82#')这个只是一个DM值的集合,集合in运算没说顺序,只是匹配是否存在于集合中。
SELECT DRYL,DRYLA FROM t_table WHERE 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#'
MS楼主写的SQL等价于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中的合集不分前后,写前写后没有效率上的变化
谢谢大家热心解答~经过测试,发现是将 IN()里面的字段排序输出的~如下: SELECT DRYL AS "液量", DRYLA AS "油量", DRHS AS "含水" FROM DBZER0321_02_V WHERE dm in('81#','四区队','五区队','82#','71#','三区队','一区队','二区队'); in 中随便写的~结果如下
貌似你写错了吧,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谢谢大家了~~