Chinaunix

标题: 请问select...from之间可以有嵌套查询码?请高人指点 [打印本页]

作者: kexinqw    时间: 2012-08-16 22:39
标题: 请问select...from之间可以有嵌套查询码?请高人指点

SQL语句如下:
SELECT unitname, SUM(amount), datatype, defraymode, datasource      
FROM   (SELECT  
               (SELECT u.unitname                     
                   FROM mm_unit_tc u                     
                          WHERE u.unitcode = p.unitcode) unitname,                  
                                                       SUM(amount) amount,
                                                            datatype datatype,                  
                                                   defraymode defraymode,
                                                   p.datasource datasource
                                                             FROM mm_payablemoney_td p            
                                                                        WHERE p.subcompany = v_subcompany
                                                                            AND p.opstatus IN ('0', '1')
                                                                            AND p.opdate BETWEEN v_startdate
                                                                            AND v_enddate
             GROUP BY unitcode, defraymode, datatype, datasource
             ORDER BY unitcode, defraymode, datatype, datasource)
                  GROUP BY unitname, defraymode, datatype, datasource   


请问高人select ..........from之间可以放嵌套查询语句吗? 什么意思啊,为什么啊。。高人能否解释下啊?
作者: kexinqw    时间: 2012-08-17 19:56
啊,没人知道吗?
作者: renxiao2003    时间: 2012-08-17 22:37
应该没有这样的写法吧。至少我没有写过。
作者: kexinqw    时间: 2012-08-18 09:31
有啊,这个是从公司里copy过来的,看不懂所以贴过来问了。。能正常运行,也能够查询出结果来。就是看不懂为什么要这样写。哎。。。
作者: supengmmer    时间: 2012-08-22 00:26
因为可以偷懒,一条语句写完,难道不好吗
作者: wlmouse    时间: 2012-08-22 11:14
这也是子查询的一种。不过要这么写一定要注意,一个是返回值的唯一性,一个是效率问题。
作者: moon38sun    时间: 2012-08-22 13:16
写法上是可以的,对于取得的记录来说,如果子查询可以保证返回结果的唯一性的话,那就没有问题。

作者: moon38sun    时间: 2012-08-22 13:17
下面的sql,一旦返回复数条结果,那是肯定要报错的。
(SELECT u.unitname                     
                   FROM mm_unit_tc u                     
                          WHERE u.unitcode = p.unitcode)





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2