在 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 服务器中无法识别。不过,它确实适用于其他流行的数据库。
我有很多表的名称都相似(例如 "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 服务器中无法识别。不过,它确实适用于其他流行的数据库。