繁体   English   中英

SQL 如何连接SQL中列名相同但数据不同的两个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM