【发布时间】:2021-02-07 12:49:49
【问题描述】:
我有两个 MS Access 表。
table1
ID Country Dat Val
1 Australia 01.10.2021 10
2 Canada 01.10.2021 100
3 Japan 01.10.2021 1000
4 Australia 02.10.2021 20
5 Canada 02.10.2021 200
6 Japan 02.10.2021 2000
和
table2
ID Country Dat Val
1 Canada 01.10.2021 50000
2 Greece 01.10.2021 50100
3 Canada 02.10.2021 60000
4 Greece 02.10.2021 60100
此 SQL 代码允许我合并两个表,它提供 10 行。
SELECT table2.Dat,
table2.Country,
table2.Val
FROM table2
LEFT JOIN table1
ON (table1.Dat = table2.Dat)
AND (table1.Country = table2.Country)
UNION ALL
SELECT table1.Dat,
table1.Country,
table1.Val
FROM table1
LEFT JOIN table2
ON (table1.Dat = table2.Dat)
AND (table1.Country = table2.Country)
ORDER BY table2.Dat,
table2.Country;
它会根据“日期”和“国家”标准给出重复项。
问题
我想知道,如果我想以某种方式合并两个表,如果 table1 和 table2 具有相同的“日期”和“国家”,那么代码应该是什么样子,然后会选择 table2 行,而不是两者?
换句话说,如何获取 table1 和 table2 中不匹配条件“日期”和“国家”的所有唯一行,并给出 table2 的优先级 何时 两个表中的行匹配 条件“日期”和“国家”?
(“日期+国家/地区”捆绑在每个表中是唯一的,即一个表中只有一个“数据+国家/地区”)
换句话说,我可以使用什么查询来使结果看起来像这样,即 8 行没有日期 + 国家/地区重复项?
Expected Result
Dat Country Val
01.10.2021 Australia 10
01.10.2021 Canada 50000
01.10.2021 Greece 50100
01.10.2021 Japan 1000
02.10.2021 Australia 20
02.10.2021 Canada 60000
02.10.2021 Greece 60100
02.10.2021 Japan 2000
还有什么可能是一个好的方法来制作这样的 SQL 脚本来根据这样的几个标准合并表?
【问题讨论】:
标签: sql database ms-access union-all