SQL查询中子查询别名‘C’的含义疑问
SQL查询中别名‘C’的含义解析
嘿,咱先把你贴的SQL语句格式化一下,看起来更清楚:
select C.CMPNAME, C.MINBIDVALUE, C.PRJID, C.ALLOTDATE from ( select min(A.bidvalue) as MINBIDVALUE, A.prjid, P.allotdate, A.cmpname from alloted A, projects P where A.prjid = P.projectid group by prjid ) C
接下来给你拆解‘C’的作用:
- ‘C’是子查询(派生表)的别名:你看到的括号里的那一大段
select ... group by prjid,其实是一个独立的子查询,它会先执行,把alloted(A)和projects(P)两张表关联起来,按项目ID(prjid)分组计算出每个项目的最低投标价,同时取出对应的项目ID、分配日期和公司名称,最终生成一个临时的结果集——这个临时结果集就被叫做“派生表”。 - 为啥要给它起别名‘C’?因为SQL语法要求,如果要把子查询的结果作为外层查询的数据源,必须给这个派生表指定一个别名(有些数据库允许省略,但这里是显式指定了C)。有了别名‘C’之后,外层查询就能通过
C.列名的方式,直接引用这个临时结果集里的字段,比如C.CMPNAME就是取子查询结果里的公司名称。
简单说,‘C’就像是给这个临时生成的“虚拟表”起了个外号,方便外层查询调用它里面的数据~
内容的提问来源于stack exchange,提问作者Abhilash Rao
相关产品推荐
相关产品推荐

