原来order by 中也可以使用子查询

            很久没写过博客了,有点惭愧,水平有限,写不出好东西来,加上人也懒。

           干开发很多年,今天突然知道点小技巧,对于高手来说,也许是很小儿科的一个东西。虽然有点汗......但是还是决定写出来记录一下,对自己能加强一下记忆,当然也希望能帮助一些和我一样还需要进步的朋友。

今天做需求的同事今天告诉,所某个页面需要得按神马属性来排序,意思就是我做的页面需要改进一下,加一个要排序,简单一想,加一个order by 就可以了。但是,在原来的sql 句中select 的字段,并不包含那个排序字段。这样就有点小麻烦了,还得加一个关联表。过了一会,自己突然想到,在sql语句的order by 中可以不可以支持子查询了。就是这样写SQL语句

            select * from table1 t order by (select name from table2 where id = t.wid)

如果支持,修改起来就简单多了。于是赶紧去试一下,真的可以哦,现在的用环境是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语句。

 

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值