在 SSMS 中加入许多具有相似名称的表的简单方法?

Simple way to join many tables with similar names in SSMS?

我有很多表的名称都相似(例如 "table1" "table2" "table3" 等),我需要在查询中使用所有这些表。它们都包含相同的两个变量("ID" 和 "date"),它们是连接的。

至少有 25 个这种类型的表,我对数据库只有只读访问权限,所以我无法合并它们,甚至无法创建一个视图来这样做。

我的问题是:是否有一个简单的快捷方式可以用来连接所有这些表?如果这是 SAS,我会创建一个宏,但我使用的是 Microsoft SQL Server Management Studio 2012。

不必这样做:

 select * 
 from table1 a
 join table2 b on a.id=b.id and a.date=b.date
 join table3 c on b.id=c.id and b.date=c.date
 join ....
 join ....
 join table25 y on x.id=y.id and x.date=y.date

我想做这样的事情:

 select *
 from merge(table1 - table25) using(id, date)

将上面的 "merge" 语句替换为适当的内容。这样的事情可能吗?

正如评论中所指出的,您正在寻找的简洁语法不存在。

缩短 SQL 的唯一方法是使用 using 关键字:

select * 
 from table1 a
 join table2 b using (id, date)
 join table3 c using (id, date)
 join ....
 join ....
 join table25 y using (id, date)

但遗憾的是,即使那样对您也不起作用,因为 using 关键字在 SQL 服务器中无法识别。不过,它确实适用于其他流行的数据库。