在SSMS查询窗口中快速定位SQL列所属表或别名的方法
在SSMS中快速定位查询列所属表/别名的方法
问题场景
你在SSMS中有如下查询语句:
select [Cars Sold], [Cars In Lot], [Available Cars], [Car Models] from Cars c inner join CarDetails cd on c.CarId = cd.CarId inner join MoreCarDetails mcd on c.CarId = mcd.CarId inner join ymcs on c.CarId = ymcs.CarId
在查询窗口内,无需查询所有表或运行列名搜索脚本,如何知晓[Cars Sold]列所属的表或别名?目前光标悬停该列时,仅显示列类型弹窗(如Column Cars Sold (nvarchar(20), null)),未包含表名称。
解决方法
- 查看定义(F12快捷键):选中
[Cars Sold]列名,右键选择「查看定义」或直接按F12,SSMS会跳转至该列所在的表结构页面,页面顶部会明确显示表的原始名称,结合查询中的别名就能对应上归属。 - 开启IntelliSense表名显示设置:
- 点击SSMS顶部菜单栏「工具」→「选项」→「文本编辑器」→「Transact-SQL」→「IntelliSense」
- 勾选「在列列表中包含表名」选项,确定后重启SSMS。此后编写查询时,自动补全的列会附带表别名;对于已存在的列,可删除列名重新输入触发补全,就能看到归属信息,部分SSMS版本中悬停列名也会同步显示表信息。
- 别名前缀验证法:临时给
[Cars Sold]加上某个表的别名前缀(比如c.[Cars Sold]),如果SSMS的语法检查没有出现红色波浪线报错,就说明该列属于这个表;若报错则换其他别名尝试,无需运行查询就能快速判断。
内容的提问来源于stack exchange,提问作者fdkgfosfskjdlsjdlkfsf
相关产品推荐
相关产品推荐

