【发布时间】:2021-07-20 00:41:18
【问题描述】:
我有许多数据库,其中的表Table1 具有相同的结构。所有表名都列在表testbases 的main1 数据库中。需要循环遍历 Table1 中的所有行并将它们插入到查询中。
SELECT * FROM [DBNAME].[DBO].Table1.Client
UNION
以这样的大查询结束:
SELECT * FROM [DBNAME1].[DBO].Table1.Client
UNION
SELECT * FROM [DBNAME2].[DBO].Table1.Client
UNION
SELECT * FROM [DBNAME3].[DBO].Table1.Client
UNION
SELECT * FROM [DBNAME4].[DBO].Table1.Client
UNION
etc...
我怎样才能高效、自动地做到这一点,这样我就不需要每次添加客户端时都手动更改查询?
【问题讨论】:
-
通常情况下,如果您的设计在许多数据库中具有相同的表,并且您希望在单个语句中使用该数据,则表明存在设计缺陷。如果您想将所有这些数据放在一个数据集中,为什么它们在不同的数据库/表中?似乎你不应该有一个客户端的数据库,而是一个表示客户端的列。否则,您将需要采用动态 SQL 方法来制定可扩展的解决方案,甚至您的基本语句也只会难以编写和维护。
-
我知道,但这是我大学的一项糟糕任务。我在 Internet 上没有找到有关如何正确循环遍历列的信息。
标签: sql sql-server tsql union dynamic-sql