原来order by 中也可以使用子查询
2013-10-12 15:29
1951 查看
很久没写过博客了,有点惭愧,水平有限,写不出好东西来,加上人也懒。
干开发很多年,今天突然知道点小技巧,对于高手来说,也许是很小儿科的一个东西。虽然有点汗......但是还是决定写出来记录一下,对自己能加强一下记忆,当然也希望能帮助一些和我一样还需要进步的朋友。
今天做需求的同事今天告诉,所某个页面需要得按神马属性来排序,意思就是我做的页面需要改进一下,加一个要排序,简单一想,加一个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语句。
干开发很多年,今天突然知道点小技巧,对于高手来说,也许是很小儿科的一个东西。虽然有点汗......但是还是决定写出来记录一下,对自己能加强一下记忆,当然也希望能帮助一些和我一样还需要进步的朋友。
今天做需求的同事今天告诉,所某个页面需要得按神马属性来排序,意思就是我做的页面需要改进一下,加一个要排序,简单一想,加一个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语句。
相关文章推荐
- SQL Server中ORDER BY后面可以是表达式和子查询
- 编程中经常发现使用未初始化变量,编译器原来可以处理进行默认初始化
- sql语句中where、group by、having、order by 是否可以使用别名
- DAO层原来可以这么简单 FastQuery使用手册.
- 原来这些方面VPS都是可以使用的呢
- DAO层原来可以这么简单 FastQuery使用手册.
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- 经测试可以勉强使用的netcat模拟器,python3代码,书上原来是python2的 做了一些小修改
- 使用html写一个android关于界面,事情原来可以如此简单
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- 报表分组统计然后显示数据的时候顺序不正常,即使用order by 也是不可以!见图
- 原来可以正常使用,现在一自检就提示:未指定的错误
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- 使用Explain关键字来确认是否可以通过索引来解决Order BY速度问题。
- 原来在事务中是可以使用 Create Table 语句的!
- 原来方法也可以这样使用
- Windows程序使用控制台输出监视的变量(原来这样也可以)
- Swift TabeleViewCell dequeueReusableCellWithIdentifier 使用的新的细节,原来现在可以这样
- CSDN的BLOG可以正常使用了,原来是因为这个原因啊!