[英]How to join two sql tables when the common column has different names but information is the same in both tables
[英]SQL how to join two tables with same column names but different data in SQL
需要你的帮助。
我有两个具有 42 个列名的数据库,需要合并到另一个具有相同 42 列且列名相同但值不同的数据库。
DT1
Column0 | Column1 | column3 | column… | column42
1234 example 345 final1
1234 example 567 final3
1234 example 789 final5
12345 example 7890 final9
12345 example 890 final10
DT2
Column0 | Column1 | column3 | column… | column42
4567 example 345 final1
4567 example 567 final3
4567 example 789 final5
45678 example 7890 final9
45678 example 890 final10
DT结果
Column0 | Column1 | column3 | column… | column42
1234 example 345 final1
1234 example 567 final3
1234 example 789 final5
12345 example 7890 final9
12345 example 890 final10
4567 example 345 final1
4567 example 567 final3
4567 example 789 final5
45678 example 7890 final9
45678 example 890 final10
谢谢!
我的代码
#directory where report results will be saved
report_result = r"path\report_result_%s.csv"%today
report_result_sql_query =""" Select b.column1, b.column2, b.column3, ... b.column42
,a.column1, a.column2, a.column3, ... a.column42
FROM table1 b
FULL OUTER JOIN table2 a
ON a.column1=b.column2
WHERE b.column2 like '%ff%'AND (a.column3 is null or a.column3= '0' or a.column3= ' ') AND a.column2 like '%ff%' AND b.column5 >= '{}' AND a.column5>= '{}'""".format(day,yyday)
print(report_result_sql_query)
report_result_colour = web_service(report_result_sql_query)
print(report_result_colour.shape)
ORC_genesis1_colour.to_csv(report_results_final, index=False)
它没有给出错误,但是它给出了零行和零列但是当我在两个单独的 SQL 查询中运行两个表时我得到了结果所以我假设我的连接有问题
不要使用FULL OUTER JOIN
,使用UNION ALL
:
SELECT column0, column1, column3, column42
FROM DT1
WHERE column1 is null
OR column1= '0'
OR column1= 'example'
UNION ALL
SELECT column0, column1, column3, column42
FROM DT2
WHERE column42 like 'f%';
其中,对于示例数据:
CREATE TABLE DT1 (Column0, Column1, column3, column42) AS
SELECT 1234, 'example', 345, 'final1' FROM DUAL UNION ALL
SELECT 1234, 'example', 567, 'final3' FROM DUAL UNION ALL
SELECT 1234, 'example', 789, 'final5' FROM DUAL UNION ALL
SELECT 12345, 'example', 7890, 'final9' FROM DUAL UNION ALL
SELECT 12345, 'example', 890, 'final10' FROM DUAL;
CREATE TABLE DT2 (Column0, Column1, column3, column42) AS
SELECT 4567, 'example', 345, 'final1' FROM DUAL UNION ALL
SELECT 4567, 'example', 567, 'final3' FROM DUAL UNION ALL
SELECT 4567, 'example', 789, 'final5' FROM DUAL UNION ALL
SELECT 45678, 'example', 7890, 'final9' FROM DUAL UNION ALL
SELECT 45678, 'example', 890, 'final10' FROM DUAL;
输出:
第 0 列 | 第 1 列 | 第 3 列 | 第 42 列 |
---|---|---|---|
1234 | 例子 | 345 | 决赛1 |
1234 | 例子 | 567 | 决赛3 |
1234 | 例子 | 789 | 决赛5 |
12345 | 例子 | 7890 | 决赛9 |
12345 | 例子 | 890 | 决赛10 |
4567 | 例子 | 345 | 决赛1 |
4567 | 例子 | 567 | 决赛3 |
4567 | 例子 | 789 | 决赛5 |
45678 | 例子 | 7890 | 决赛9 |
45678 | 例子 | 890 | 决赛10 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.