版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luo4105/article/details/51397825
一直没有注重于sql这一块,现在的项目有大量的统计,报表,以前都是多表连接或者用mybatis的延迟加载之类的,这几天心血来潮自己查了一下,发现了sql子查询这个好东西,感觉方便多了,速度也快多了(自我感觉)。of course,以后还是要多用函数,好一点。
sql的子查询是可以在把数据查出来后在查出一条其他表的关联数据的一项(多项或者多条都会报错),
比如我们要查询用户表(user)并加上一个列(rolename)表示它代表的权限的名字,那么我们可以这么写:
select *,(select rolename form role where roleId=<span style="font-family: Arial, Helvetica, sans-serif;">user.roleId</span><span style="font-family: Arial, Helvetica, sans-serif;">) as a from user</span>
甚至我们还可以添加一些常量进去(对于sql是常量,对于后台就是变量了)
比如在我们上个例子中加上一列列名为"nowTime"的列,里面是当前的时间,那么我们可以这么做
select *,(select rolename form role where roleId=user.roleId) as rolename,'2016-05-13' as nowTime from user
这sql这几天真的写的蛮开心,哈哈