有没有一种方法可以对“where not exists”使用复合字段

2skhul33  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(511)

我正在尝试将表paycom中的行插入到表users中,我只想在唯一用户名不存在时插入它们。用户名是通过paycom表中的名字和姓氏的第一个字母生成的。我尝试过各种方法,但在比较user表中的username和paycom表中其他字段的组合时遇到了问题。我尝试过各种方法,但是它告诉我找不到multipart方法或者字段不存在。
你知道吗?
谢谢

/******Script for SelectTopNRows command from SSMS******/
INSERT INTO [test].[dbo].[tblUser] (
       [FirstName]
      ,[LastName]
      ,[Email]
      ,[Location]
      ,[Active]
      ,[Position]
      ,[UserName]
      )
SELECT [Firstname]
      ,[Lastname]
      ,[WorkEmail]
      ,[Department]
      ,1
      ,[JobTitleCode]
      ,LEFT(FirstName,1) + LastName + pin as t1
FROM Paycom
WHERE NOT EXISTS (Select UserName,UserId From [test].[dbo].[tblUser] WHERE tblUser.UserName =[test].[dbo].[tblUser].[Paycom].t1)
and HireDate >= GETDATE();
iibxawm4

iibxawm41#

把where子句写成这样。

WHERE NOT (
   LEFT(paycom.FirstName,1) = LEFT([test].[dbo].[tblUser].[firstname],1)
        AND  paycom.lastname = [test].[dbo].[tblUser].[lastname]
    )
        and HireDate >= GETDATE();

请注意,这可能不是处理此问题的最有效方法,但应该可以让您开始。

kadbb459

kadbb4592#

好吧,我想出来了。我更新了paycom表以包含一个新的列,该列用于生成要导入到user表的username列。从那里我可以简化'where not exists'参数并正确运行insert。谢谢

相关问题