SQL语句中B(XMLData)里的B是什么含义?自定义名称仍可用
关于SQL语句中
B(XMLData)里B的含义 这里的B是Cross Apply后面临时结果集的表别名,就是给这个临时生成的数据集起个代号,方便数据库识别它。
具体到这段SQL里:
Cross Apply ( values (cast((Select A.* for XML RAW) as xml))) B(XMLData)
括号里的values(...)会生成一个仅一行一列的临时结果,XMLData是这一列的名称,而B就是整个临时结果集的“外号”——你换成helloworld或者其他合法名字都行,只要别和查询里别的别名重复就不影响运行。
为什么删了B会报错?因为数据库要求From/Apply子句里的所有结果集(不管是物理表还是临时生成的)都必须有别名,不然数据库没法定位后面引用的XMLData列,就会提示“未指定列名”。后面第二个Cross Apply里用到的XMLData,其实默认是B.XMLData的简写,只是因为上下文里只有这个别名对应列,所以可以省略前缀。
内容的提问来源于stack exchange,提问作者Mason
相关产品推荐
相关产品推荐

