使用Inner Join得到横向结果,如何实现指定纵向合并输出?
实现两张表的纵向合并并过滤指定ID
要实现你需要的纵向合并效果,不需要用INNER JOIN(横向拼接),而是用UNION ALL结合子查询过滤来完成,具体SQL语句如下:
SELECT id, date, department FROM employee UNION ALL SELECT id, date, department FROM employee_1 WHERE id IN (SELECT id FROM employee);
逻辑说明:
- 第一部分查询:直接获取
employee表的所有数据,保留你需要的原始记录。 - 第二部分查询:通过
WHERE id IN (SELECT id FROM employee)筛选出employee_1中与employee存在相同id的行,确保只保留符合条件的记录。 - UNION ALL:将两个查询的结果纵向拼接(上下堆叠),因为两张表的字段结构完全一致,所以可以直接合并。
结果验证:
执行上述语句后,会得到你期望的输出:
id date department 1 2022-09-09 professor 2 2022-10-08 professor 3 2022-10-11 professor 3 2022-09-02 professor 1 2021-09-09 professor 2 2021-10-08 professor 3 2021-10-11 professor 3 2021-09-02 professor
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

