SSMS-来自另一个带有 XML 的表的多个类似条件

问题描述 投票:0回答:1

我设置了一个带有此类输出的审核表(我对设计没有发言权),其中包含日期、用户和“记录”列(XML 输出)

用户 日期 记录
A 2023-01-01 见下图无法输入此表
    <updated>
      <ID>322ZZ444-4B0A-3A28-8CF3-0T1ZC8D4D1CB</ID>
      <STATUS_ID>
        <old>2</old>
        <new>1</new>
      </STATUS_ID>

XML 可以是任意长度并且其中包含其他变量

从另一个表 B 中,我有这样的表:

身份证 状态_ID 优先
322ZZ444-4B0A-3A28-8CF3-0T1ZC8D4D1CB 1 4
456AA241-7C1B-4L18-0AH4-7C1B7C1B7C1B 1 4
4B0A4B0A-4B0A-4B0A-4B0A-4B0A7C1B4B0A 2 4

我想从表 Audit 中的表 B 中查找用户和日期的所有实例。大约有100个条目,我能想到的唯一方法就是使用OR语句。

现在需要是这样的:

select * from Audit table where 
cast(record as NVARCHAR(MAX)) like '%322ZZ444-4B0A-3A28-8CF3-0T1ZC8D4D1CB%' 
OR cast(record as NVARCHAR(MAX)) like '%456AA241-7C1B-4L18-0AH4-7C1B7C1B7C1B%' 

但这对于 100 行来说似乎很笨拙。理想情况下,我希望我可以使用 like 或 in ,但在 like 语句中不允许使用多个值,并且 in 语句需要精确的值(我没有,因为我不知道还做了什么)。

select * from Audit table where 
cast(record as NVARCHAR(MAX)) like (select id from Table B where priority=4 and status_id=1) 

也许我需要逐个循环表 B 中的值并将它们插入到另一个表中? (假设这似乎可行,但我不知道如何)

sql ssms
1个回答
0
投票

您可以使用

INNER JOIN

select * from [Audit table] 
JOIN (select id from [Table B] where priority=4 and status_id=1)  b
 ON cast(record as NVARCHAR(MAX)) like id
© www.soinside.com 2019 - 2024. All rights reserved.