使用 SQL QUERY 在另一个现有 table 中追加特定列
Append the specific column in another existing table using SQL QUERY
我知道将一整行附加到新行听起来很容易 table,但这是不同的
问题 1,说明合并 Table 1 和 Table 2 并保留重复值,以创建新的 table,我使用了以下查询:
CREATE TABLE EMP_TBL_3
(
EMP_ID int,
Name varchar(255),
DOJ int
);
INSERT INTO EMP_TBL_3 (EMP_ID, Name, DOJ)
SELECT * FROM EMP_TBL_1
UNION ALL
SELECT * FROM EMP_TBL_2;
结果:
现在问题出现在第2个问题,说:把EMP_BRTH_REC中的D.O.B合并成EMP_TBL_3:
我试过这个查询:
ALTER TABLE EMP_TBL_3
ADD DOB int;
SELECT * FROM EMP_TBL_3;
SELECT EMP_ID, Name, DOJ, DOB
FROM EMP_TBL_3
UNION ALL
SELECT EMP_TBL_3.EMP_ID, EMP_TBL_3.Name, EMP_TBL_3.DOJ, EMP_BRTH_REC.DOB
FROM EMP_BRTH_REC
LEFT JOIN EMP_TBL_3 ON EMP_BRTH_REC.EMP_ID = EMP_TBL_3.EMP_ID;
结果:
我想要的输出是:
我该怎么做?
如果我理解属性,你只需要这样做:
select EMP_TBL_3.EMP_ID, EMP_TBL_3.Name, EMP_TBL_3.DOJ, EMP_BRTH_REC.DOB
from EMP_BRTH_REC LEFT JOIN
EMP_TBL_3
on EMP_BRTH_REC.EMP_ID = EMP_TBL_3.EMP_ID;
您两次使用 UNION ALL 插入记录。我建议您截断数据并将其重新加载到 Tbl3 中,如下所示:
ALTER TABLE EMP_TBL_3
ADD DOB int;
TRUNCATE TABLE Emp_Tbl_3;
INSERT INTO Emp_Tbl_3(Emp_Id, Name, DOJ, DOB)
SELECT EMP_TBL_1.EMP_ID, EMP_TBL_1.Name, EMP_TBL_1.DOJ, EMP_BRTH_REC.DOB
from
EMP_BRTH_REC
LEFT JOIN EMP_TBL_1
on EMP_BRTH_REC.EMP_ID = EMP_TBL_1.EMP_ID
UNION ALL
SELECT EMP_TBL_2.EMP_ID, EMP_TBL_2.Name, EMP_TBL_2.DOJ, EMP_BRTH_REC.DOB
from
EMP_BRTH_REC
LEFT JOIN EMP_TBL_2
on EMP_BRTH_REC.EMP_ID = EMP_TBL_2.EMP_ID;
我知道将一整行附加到新行听起来很容易 table,但这是不同的
问题 1,说明合并 Table 1 和 Table 2 并保留重复值,以创建新的 table,我使用了以下查询:
CREATE TABLE EMP_TBL_3
(
EMP_ID int,
Name varchar(255),
DOJ int
);
INSERT INTO EMP_TBL_3 (EMP_ID, Name, DOJ)
SELECT * FROM EMP_TBL_1
UNION ALL
SELECT * FROM EMP_TBL_2;
结果:
现在问题出现在第2个问题,说:把EMP_BRTH_REC中的D.O.B合并成EMP_TBL_3:
我试过这个查询:
ALTER TABLE EMP_TBL_3
ADD DOB int;
SELECT * FROM EMP_TBL_3;
SELECT EMP_ID, Name, DOJ, DOB
FROM EMP_TBL_3
UNION ALL
SELECT EMP_TBL_3.EMP_ID, EMP_TBL_3.Name, EMP_TBL_3.DOJ, EMP_BRTH_REC.DOB
FROM EMP_BRTH_REC
LEFT JOIN EMP_TBL_3 ON EMP_BRTH_REC.EMP_ID = EMP_TBL_3.EMP_ID;
结果:
我想要的输出是:
我该怎么做?
如果我理解属性,你只需要这样做:
select EMP_TBL_3.EMP_ID, EMP_TBL_3.Name, EMP_TBL_3.DOJ, EMP_BRTH_REC.DOB
from EMP_BRTH_REC LEFT JOIN
EMP_TBL_3
on EMP_BRTH_REC.EMP_ID = EMP_TBL_3.EMP_ID;
您两次使用 UNION ALL 插入记录。我建议您截断数据并将其重新加载到 Tbl3 中,如下所示:
ALTER TABLE EMP_TBL_3
ADD DOB int;
TRUNCATE TABLE Emp_Tbl_3;
INSERT INTO Emp_Tbl_3(Emp_Id, Name, DOJ, DOB)
SELECT EMP_TBL_1.EMP_ID, EMP_TBL_1.Name, EMP_TBL_1.DOJ, EMP_BRTH_REC.DOB
from
EMP_BRTH_REC
LEFT JOIN EMP_TBL_1
on EMP_BRTH_REC.EMP_ID = EMP_TBL_1.EMP_ID
UNION ALL
SELECT EMP_TBL_2.EMP_ID, EMP_TBL_2.Name, EMP_TBL_2.DOJ, EMP_BRTH_REC.DOB
from
EMP_BRTH_REC
LEFT JOIN EMP_TBL_2
on EMP_BRTH_REC.EMP_ID = EMP_TBL_2.EMP_ID;