原来orderby中也可以使⽤⼦查询
很久没写过博客了,有点惭愧,⽔平有限,写不出好东西来,加上⼈也懒。
⼲开发很多年,今天突然知道点⼩技巧,对于⾼⼿来说,也许是很⼩⼉科的⼀个东西。虽然有点汗......但是还是决定写出来记录⼀下,对⾃⼰能加强⼀下记忆,当然也希望能帮助⼀些和我⼀样还需要进步的朋友。
今天做需求的同事今天告诉,所某个页⾯需要得按神马属性来排序,意思就是我做的页⾯需要改进⼀下,加⼀个要排序,简单⼀想,加⼀个order by 就可以了。但是,在原来的sql 句中select 的字段,并不包含那个排序字段。这样就有点⼩⿇烦了,还得加⼀个关联表。过了⼀会,⾃⼰突然想到,在sql语句的order by 中可以不可以⽀持⼦查询了。就是这样写SQL语句
select * from table1 t order by (select name from table2 where id = t.wid)
sql中select是什么意思如果⽀持,修改起来就简单多了。于是赶紧去试⼀下,真的可以哦,现在的⽤环境是oracle,估计Sqlserver应该也是可以的,⼿头没有SQL 环境,⽆法测试。
写SQL语句都很多年了,才知道原来可以这么写,好惭愧..........
其实像上⾯的简单的SQL,要不要这么写,也没什么,因为换个写法也不复杂,但是如果在SQL语句有 group by 之类复杂语句就⿇烦了。⽐如
select xmid,dwid,sum(mcount)  from table1 t where 1=1 and 2=2 group by xmid,dwid order by (select name from
table2 where id = t.dwid)
这样的SQL语句中,order by 中允许⼦查询就⽅便多了。根据个⼈经验,写SQL语句如果能少关联⼀个表,相对来说,感觉会简单好多。越是简单的东西,会让⼈感觉越舒服。在古龙的⼩说有⼀句话,最简单的⽅法就是最好的⽅法。
补充⼀个order by 的字段可以转化的 order by to_number(字段)
这个也许在ORM世界⾥,没有任何意义,因为不再需要写SQL语句。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。