【问题标题】:Search for values in table1 that match values in table2 without joins (Sql Server 2008)在 table1 中搜索与 table2 中的值匹配的值,而无需连接 (Sql Server 2008)
【发布时间】:2014-02-24 08:33:03
【问题描述】:

我遇到了这样一种情况,我有两个存储员工信息的表,表 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)

谢谢!

【问题讨论】:

  • 这就是我的做法,但你可以结合你的两个 EXISTS 子句:WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE t1.DOB = t2.Birth_date AND t1.code = t2.last4)
  • 谢谢,我进行了更改,但我意识到我需要知道生成匹配项的 table2 中的 User_ID,您知道如何完成吗?
  • @Jeremy,如果将 table2 连接到 table1,您可以获得 Id,或者您可能必须在选择中使用子查询。

标签: sql-server-2008 anti-join


【解决方案1】:

试试这个

没有连接:

SELECT t1.*,
(SELECT user_id FROM table2 t2 
              WHERE t1.DOB = t2.Birth_date and t1.code = t2.last4) user_id
FROM table1 t1 
WHERE EXISTS (SELECT 1 FROM table2 t2 
              WHERE t1.DOB = t2.Birth_date and t1.code = t2.last4)

使用连接

SELECT t1.*, t2.user_id
FROM table1 t1 
inner join table2 t2 on t1.DOB = t2.Birth_date and t1.code = t2.last4

SQL DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2012-12-18
    相关资源
    最近更新 更多