You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教带虚拟表的SELECT语句逻辑:子查询别名M1、M2作用解析

这段SQL代码逻辑解析

括号内SELECT语句的作用

括号里的select VAR1 from dbo.mydata和select VAR2 from dbo.yourdata是子查询,作用是从原表中仅提取需要的列:

  • 第一个子查询从dbo.mydata表中取出VAR1列的所有数据
  • 第二个子查询从dbo.yourdata表中取出VAR2列的所有数据

别名M1、M2的意义

这两个别名是给对应子查询的结果集起的临时表名(也就是你提到的「虚拟表」):

  • M1指代第一个子查询生成的虚拟表,后续可以通过M1.VAR1明确引用这个虚拟表里的VAR1列
  • M2指代第二个子查询生成的虚拟表,后续可以通过M2.VAR2明确引用这个虚拟表里的VAR2列

整段SQL的实际效果

这段代码用了老式的逗号分隔表的连接写法,等价于内连接(INNER JOIN)两个虚拟表,最终返回两张表中VAR1和VAR2值相等的所有记录对,结果会包含VAR1和VAR2两列数据。

现在更推荐用标准JOIN语法编写,可读性更强,等价写法如下:

select M1.VAR1, M2.VAR2
from (select VAR1 from dbo.mydata) M1
inner join (select VAR2 from dbo.yourdata) M2
on M1.VAR1 = M2.VAR2

内容的提问来源于stack exchange,提问作者Georg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:04:49