我有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
任何有关如何执行此操作的帮助都将非常感激。谢谢!!
答案 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