gpt4 book ai didi

sql - 在sql查询中获取没有添加列的表

转载 作者:行者123 更新时间:2023-12-04 21:41:48 25 4
gpt4 key购买 nike

我在 sql server 数据库中有一个这样的进程表:

Process Table

如果 Rolename 存在于 RoleTable 中,我需要选择 Process,如下所示:

 select ID,WorkflowXML 
from
(
select m.c.value('@RoleName','nvarchar(max)') as Rolename,p.*
from Process as p
outer apply p.WorkflowXML.nodes('/workflow/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c)
) as Pro where Pro.Rolename in
(SELECT * from RoleTable)

在此选择 Rolename 添加到 Process。我只需要Process 表。我可以添加Process字段(ID,WorkflowXML)来查询。如果我更改 Process 表设计,我应该编辑查询。这不是很好。

有没有一种方法可以在查询中选择 Process 表而不用像这样添加 Process 字段?

select Pro
from
(
select m.c.value('@RoleName','nvarchar(max)') as Rolename,p.*
from Process as p
outer apply p.WorkflowXML.nodes('/workflow/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c)
) as Pro where Pro.Rolename in
(SELECT * from RoleTable)

谢谢。

最佳答案

您可以像这样加入此表:

select p.*
from Process as p
outer apply p.WorkflowXML.nodes('/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c)
INNER JOIN RoleTable r
ON r.Rolename = m.c.value('@RoleName','varchar(max)')

关于sql - 在sql查询中获取没有添加列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com