如何将两个表列合并到一个表中与SQL中的所选列

时间:2019-05-13 15:42:12

标签: sql

我有两个表TableA和TableB。我想获得一个新的表值,我想要TableA的所有值,而TableB仅一个列的值。 两个表都有5列,其中四个列名称相同,仅第五列名称不同。我想要的是从TableA获取五个列值,并将TablelB的第五个列值插入到TableA中作为第六个列

我尝试使用UNION,UNION ALL,但没有获得预期的输出。我还尝试从TableB提取第五列的值,然后插入到第六列的TableA中,但不确定我在哪里做错了。无法获得预期的价值

样本数据:

表A

id  name age address entrydatetime
1    AA   20  tyk    2019-05-13:8:35:00
2    AAA  22  tyl    2019-05-13:9:40:00

TableB

id  name age address exitdatetime
1    AA   20  tyk    2019-05-13:15:20:00
2    AAA  22  tyl    2019-05-13:16:40:00

预期输出:
NewTable

id  name age address entrydatetime         exitdatetime
1    AA   20  tyk    2019-05-13:8:35:00    2019-05-13:15:20:00
2    AAA  22  tyl    2019-05-13:8:35:00    2019-05-13:16:40:00

1 个答案:

答案 0 :(得分:1)

那很简单:

SELECT A.*, B.exitdatetime
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;

当您需要将一个表的行与另一个表(甚至是同一个表,视为另一个表)中的0-N行进行匹配时,就需要加入表。

一种更好的方法是命名您需要的每个字段,而不使用*。我只是用它来做一个快速样本。

仅作记录用途,数据库未规范化,因此具有数据冗余,这意味着您可能会出现数据不一致。例如,如果此操作至少返回一行,则说明数据不一致:

SELECT *
FROM TableA A
INNER JOIN TableB B ON A.id = B.id
WHERE A.name != B.name OR A.age != B.age OR A.address != B.address;