首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当您不知道要合并的表数时,联合两个或多个表

当您不知道要合并的表数时,联合两个或多个表
EN

Stack Overflow用户
提问于 2009-03-31 13:29:18
回答 2查看 171关注 0票数 1

我正在使用MS SQL 2005。我将树结构定义为:

代码语言:javascript
运行
复制
1 
|\ 
2 3 
  /|\ 
 4 5 6 

我已经创建了一个SQL-function Subs( id ),它获取id并返回子树表。因此,Subs(3)将返回4行,共3,4,5,6行,而Subs( 2 )将返回一行,共2行。

我有一条select语句返回上面的I(将此树与其他表连接)

我想要在返回上述Ids的select语句之后

(例如,这将产生一个包含两行的表:)

代码语言:javascript
运行
复制
2
3

为了能够以如下方式运行Subs-function

代码语言:javascript
运行
复制
Subs(2) 
union 
Subs(3).

(结果应该是id为2,3,4,5,6的行)

问题是我不知道如何传递参数,也不知道如何动态使用联合。

有没有可能在这个级别解决这个问题,或者我应该把它带到更高的级别(C#)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-31 13:36:48

我不认为这里需要UNION,使用SQL Server 2005,您可以使用CROSS APPLY获得所需的结果:

代码语言:javascript
运行
复制
select 
    f.* 
from 
    resultsTable rt
    cross apply dbo.subs(rt.ID) f

假设resultTable存储第一个查询的结果,并且字段的名称为ID

票数 1
EN

Stack Overflow用户

发布于 2009-03-31 13:33:30

我觉得你应该好好读一读Recursive Common Table Expressions的内容。

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

https://stackoverflow.com/questions/700950

复制
相关文章

相似问题

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