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