MySQL SELECT UNION 在单列上不同

MySQL SELECT UNION Distinct on single column

我有两个 table 用于在我的系统中存储汇率。第一个 agent_rate如下。

ID  Currency Rate
=======================
3   GBP      0.65
4   EUR      0.70
5   JPY      57.4

第二个tableexchange_rate如下

ID  Currency Rate
=======================
1   USD         1
2   ZMK       200
3   GBP       0.5
4   EUR      0.75
5   JPY      60.4
6   CHF       0.9

我想select第一个tableagent_rate中的所有行,然后添加ID的所有缺失值exchange_ratetable。我想在单个列上使用具有 distinct 的联合语句,但我没有这样做。我目前的解决方案如下(visual studio)

  1. select 来自 agent_rate table 和填充率数据 table
  2. 设置唯一字段,即汇率数据中的 IDtable
  3. select 并从 exchange_rate table 填充到临时数据 table
  4. 将记录从临时数据table移至评级数据table并忽略错误

结果table是(应该)如下:

ID  Currency Rate
=======================
1   USD         1
2   ZMK       200
3   GBP      0.65
4   EUR      0.70
5   JPY      57.4
6   CHF       0.9

在 Sql 中有更好的方法吗?

可以先加入table和select的代理值,如果有则先加入,否则交换值table

select coalesce(a.id, e.id) as id, 
       coalesce(a.currency, e.currency) as currency,
       coalesce(a.rate, e.rate) as rate
from exchange_rate e
left agent_rate a on a.id = e.id

coalesce returns 提供的列表中的第一个非空值。