簡體   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