【发布时间】:2019-11-06 10:40:08
【问题描述】:
我有两个表格和数据,如下所示:
我想比较两个表的列“Type 和 MatchType”,并确定 MatchType 中缺少 Type 的第一个表的 Id。如果我们可以使用连接,“类型”和“匹配类型”是两个表中唯一的公共列。例如,第二行的 FirstTable 列值匹配 SecondTable 的第二行,比较应该像 FirstTable 总是有数字,而第二个表在相同的数字之前有 2 个字符,所以我们应该忽略这些字符并只检查数字,如果两者都有匹配,然后忽略第一个表中的 ID。在下面的示例数据中,我的输出应该有来自 FirstTable 的 Id 1 和 3,因为这两个记录的“类型”都是 NULL 或在 SecondTable 中不存在。
CREATE TABLE [dbo].[FirstTable](
[Id] [int] NOT NULL,
[Name] [varchar](50) NULL,
[Type] [varchar](50) NULL
)
CREATE TABLE [dbo].[SecondTable](
[ID] [int] NULL,
[Relation] [varchar](50) NULL,
[MatchType] [nvarchar](50) NULL
)
Id Name Type
1 Bam 1234
2 Prish 3433
3 Tomato 4545
ID Relation MatchType
1 Sister NULL
2 Mother PS3433
3 Nomad NULL
4 Nothing PS4322
预期结果
Ids(来自第一个表,因为 SecondTable 的 MatchType 中不存在相应 ID 的类型 - 请记住删除第二个表 MatchType 值中前面的 2 个字符并仅比较数字)
1
3
我尝试使用PATINDEX,但它似乎不起作用或者我做错了什么。
【问题讨论】:
标签: sql sql-server join sql-server-2016 sqlcommand