我遇到了一种情况,我有两个存储员工信息的表,表 1 是员工,表 2 是第 3 方临时工。这些表对 ID 使用不同的约定(不是我可以控制的)。
问题是这些第 3 方临时工经常被雇用,并且这些表之间没有联系。发生这种情况时,我需要在创建它们之前确保它们不存在于 Table2 中。现在,我只想确定 DOB 和 Last 4 上的匹配项,尽管我可能至少要在条件中添加名字,但现在我想从某个地方开始。
尽管名称不同的列是相同的(DOB = Birth Date,Code = Last 4)
CREATE TABLE Table1
([Emp_ID] int, [DOB] date, [code] varchar(10))
;
INSERT INTO Table1
([Emp_ID], [DOB], [code])
VALUES
(55556, '1966-01-15', '5454'),
(55557, '1980-03-21', '6868'),
(55558, '1985-04-26', '7979'),
(55559, '1990-10-17', '1212'),
(55560, '1992-12-30', '6767')
;
CREATE TABLE Table2
([USer_ID] int, [Birth_Date] date, [last4] varchar(10))
;
INSERT INTO Table2
([User_ID], [Birth_Date], [last4])
VALUES
(22223, '1966-01-15', '5454'),
(22224, '1980-03-21', '6868'),
(22225, '1975-07-19', '4545'),
(22226, '1988-05-24', '3434')
;
这是我想出的,它似乎有效,但我需要从产生此匹配的 table2 返回 user_id?
SELECT *
FROM table1 t1
WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE t1.DOB = t2.Birth_date)
AND EXISTS (SELECT 1 FROM table2 t2 WHERE t1.code = t2.last4)
谢谢!