如何合并行大小不相等的不同表中的两列

时间:2019-04-18 11:25:11

标签: mysql sql

我有两个表包含员工签入日志,第一个表仅包含签入数据,第二个表仅包含签出数据。数据来自两台不同的计算机,有时签入和签出数据不匹配。我的意思是,签到或签出表可能还有其他数据。我无法将来自不同表的行大小不等的这两列与员工ID组合在一起,我什至不知道该操作是否可能(我是SQL的初学者)。

目的是我想一次提取所有数据。当然,我可以将数据分别拉到机器或表上。

当我尝试诸如左联接,内部联接或完全联接之类的操作时,它只为第二个表的数据的每个元素保留第一个表的第一个元素,然后继续为第一个表的第二个元素做操作。我认为那是因为两列的行大小不相等。

SELECT col1,col2
FROM table1 as t1 LEFT JOIN
     table2 as t2
     ON t1.id = t2.id
WHERE t1.id = 4 AND t2.id = 4 

SELECT col1
FROM table1
WHERE id = 4 IN (SELECT col2 FROM table2 WHERE id= 4)

id = 4个适合我的id,可能在1到30之间。

1 个答案:

答案 0 :(得分:0)

使用union all

SELECT col1,col2
FROM table1 as t1 LEFT JOIN
     table2 as t2
     ON t1.id = t2.id
WHERE t1.id = 4 AND t2.id = 4 
union all

SELECT col1,0
FROM table1
WHERE id = 4 IN (SELECT col2 FROM table2 WHERE id= 4)