如何组合2个表并将值插入第3个表

时间:2017-04-10 17:36:58

标签: sql db2

我有2个表,格式如下所示:...

T1

ID   SUB_ID   NAME   NUM
123  ABC      TEST   5
456  XYZ      HELLO  10

T2

ID   SUB_ID   NAME   NUM  CAT  ACTY
123  ABC      TEST   5    sjq  h5h
456  XYZ      HELLO  10   hwl  888

我想看看这两个表并根据ID和SUB_ID进行匹配并将它们连接在一起,这样我就可以获得T1中的所有列以及T1中缺少的那些列中的列

这两个表都包含数千行,但我在此示例中进行了简化。

这是我尝试的代码,但我要回到很多行..

SELECT * 
FROM T1 YY
INNER JOIN T2 ZZ
WHERE YY.ID = ZZ.ID and YY.SUB_ID = ZZ.SUB_ID

任何有关如何执行此操作的帮助都将非常感激。谢谢!!

2 个答案:

答案 0 :(得分:1)

我将在这里“猜测”(这里只是一个GUESS)

INSERT INTO T3
 (ID, SUB_ID, NAME, NUM, CAT, ACTY)
SELECT T1.ID, T1.SUB_ID, T1.NAME, T1.NUM,
      T2,CAT,  T2.ACTY
FROM T1
INNER JOIN T2
    ON T1.ID = T2.ID 
       AND T1.SUB_ID = T2.SUB_ID
WHERE (T1.ID = 123 AND T1.SUB_ID = 'ABC')
   OR (T1.ID = 456 AND T1.SUB_ID = 'XYZ')

如果T3在ID上有身份,您可能需要更改查询以解释该问题。

参考我的评论,这似乎是相同的结果:

INSERT INTO T3
 (ID, SUB_ID, NAME, NUM, CAT, ACTY)
SELECT T2.ID, T2.SUB_ID, T2.NAME, T2.NUM, T2,CAT, T2.ACTY
FROM T2
WHERE (T1.ID = 123 AND T1.SUB_ID = 'ABC')
   OR (T1.ID = 456 AND T1.SUB_ID = 'XYZ')

答案 1 :(得分:0)

您的代码(类似于下面的代码)是正确的,但如果一个或多个表中有多个具有相同ID和SUB_ID的行,则可能会让您感到惊讶。

SELECT * 
FROM T1 YY
INNER JOIN T2 ZZ
WHERE (YY.ID = ZZ.ID AND YY.SUB_ID = ZZ.SUB_ID)

以下示例记录将返回4行,而不是2 ,因为第一个表中的每一行都匹配第二个表中的2行。

T1

ID   SUB_ID   NAME   NUM
123  ABC      TEST   5
123  ABC      TEST2  10

T2

ID   SUB_ID   NAME   NUM  CAT  ACTY
123  ABC      TEST   5    sjq  h5h
123  ABC      TEST2  10   hwl  888