比较两个表中相应列的匹配值并识别缺失的记录
Compare two tables for a matching value from the respective columns and identify records missing
我有两个 table 和如下数据:
我想比较两个 table 的列 "Type and MatchType" 并确定第一个 table 的 ID,其中 MatchType 中缺少类型。 "Type" 和 "MatchType" 是两个 table 中唯一的公共列,以防我们可以使用连接。例如,第二行中的 FirstTable 列值匹配 SecondTable 的第二行,比较应该像 FirstTable 总是有数字和第二个 table 在相同数字之前有 2 个字符,所以我们应该忽略字符并只检查数字,如果两者匹配,则忽略第一个 table 中的 ID。在下面的示例数据中,我的输出应该有来自 FirstTable 的 ID 1 和 3,因为这两个记录的 "Type" 都是 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(从第一个 table 开始,因为相应 ID 的类型不存在于 SecondTable 的 MatchType 中 - 请记住删除第二个 table 的 MatchType 值中前面的 2 个字符,然后进行比较数)
1
3
我尝试使用 PATINDEX
但它似乎不起作用或者我做错了什么。
试试这个
SELECT F.*
FROM FirstTable F LEFT JOIN (SELECT RIGHT(MatchType,LEN(MatchType)-2) MT FROM SecondTable) S ON F.Type = S.MT
WHERE S.MT IS NULL
我有两个 table 和如下数据:
我想比较两个 table 的列 "Type and MatchType" 并确定第一个 table 的 ID,其中 MatchType 中缺少类型。 "Type" 和 "MatchType" 是两个 table 中唯一的公共列,以防我们可以使用连接。例如,第二行中的 FirstTable 列值匹配 SecondTable 的第二行,比较应该像 FirstTable 总是有数字和第二个 table 在相同数字之前有 2 个字符,所以我们应该忽略字符并只检查数字,如果两者匹配,则忽略第一个 table 中的 ID。在下面的示例数据中,我的输出应该有来自 FirstTable 的 ID 1 和 3,因为这两个记录的 "Type" 都是 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(从第一个 table 开始,因为相应 ID 的类型不存在于 SecondTable 的 MatchType 中 - 请记住删除第二个 table 的 MatchType 值中前面的 2 个字符,然后进行比较数)
1
3
我尝试使用 PATINDEX
但它似乎不起作用或者我做错了什么。
试试这个
SELECT F.*
FROM FirstTable F LEFT JOIN (SELECT RIGHT(MatchType,LEN(MatchType)-2) MT FROM SecondTable) S ON F.Type = S.MT
WHERE S.MT IS NULL