首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL基于名称列表连接表

SQL基于名称列表连接表
EN

Stack Overflow用户
提问于 2009-10-19 17:39:27
回答 2查看 521关注 0票数 0

我正在寻找一种基于表名列表连接一系列SQL表的方法。表名的列表可以随着系统的增长而变化,但我需要确保连接在所有表增长时都能运行。

列表中的每个表都有一个名为ActivityID的公共列,它是活动表的外键,活动表是连接的源表。

我曾考虑过在执行之前创建一个varchar并构建查询。这是最好的方法吗?或者可以在不构建varchar的情况下创建连接语法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-19 09:56:29

我会将查询放在一个视图中。添加新表时,请更改视图以包括新表。这将比动态sql高效得多。

如果您不控制谁/何时添加表,则类似于以下动态SQL的内容将在Sql Server中工作:

代码语言:javascript
运行
复制
declare @query nvarchar(max)
set @query = 'select * from t1 '

select  
    @query = @query + 'left join ' + name + 
        ' on t1.ActivityID = ' + name + '.ActivityID '
from sys.tables
where name like '%Activity%'

exec (@query)

再说一次,我想知道调用程序是如何知道需要哪些字段的。

票数 1
EN

Stack Overflow用户

发布于 2009-10-19 09:43:01

标准SQL不能做到这一点。无论如何,这通常是一个糟糕的设计。某些供应商有允许这样做的扩展,比如甲骨文在匿名PL/SQL块中有EXECUTE IMMEDIATE

您需要在外部构建语句,或者使用类似于存储过程的方法来构建语句并执行它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1587767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档