在MS ACCESS中管理JOIN的不匹配结果

时间:2018-03-08 09:02:30

标签: sql ms-access

我有一张表" CODE"," DATA"列和表格包含"旧代码"," NEW-CODE"用于将旧代码映射到新代码的列。 我需要执行Join以获取具有新代码的数据,但仅限于可用的地方,否则我需要保留旧代码。 有没有办法做类似" LEFT JOIN或SELF"为了在匹配失败的情况下设置连接左侧的值?

CODE    DATA
-        -
A        30
B        34
C        5
D        10

这是第二个表

  OLD CODE  NEW CODE

    B       Ba1
    C       Ca2
    D       Da3

现在预期的结果将是来自第一个表的DATA,如果可用,则使用新代码。否则就是旧代码。

CODE    DATA

A      30
Ba1    34
Ca2    5
Da3    10

2 个答案:

答案 0 :(得分:1)

如果新代码不存在,请使用LEFT OUTER JOIN以获取旧代码

SELECT 
       IIF(s.newcode IS NULL, f.Code, s.newcode) AS Code, 
       f.DATA 
FROM FirstTable f
LEFT OUTER JOIN SecodTable s ON s.OLDCODE = f.CODE

答案 1 :(得分:0)

可能不是最好的方法,但它应该有效:

SELECT
  t2.new_code
FROM
  Table1 t1 INNER JOIN Table2 t2 ON t1.code=t2.old_code

UNION ALL

SELECT
  code
FROM
  Table1
WHERE
  code NOT IN (SELECT old_code FROM Table2);

问题在于,如果您的需求发生变化,您将有2 SELECT个陈述来维护。