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)
- select 来自 agent_rate table 和填充率数据 table
- 设置唯一字段,即汇率数据中的 IDtable
- select 并从 exchange_rate table 填充到临时数据 table
- 将记录从临时数据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 提供的列表中的第一个非空值。
我有两个 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)
- select 来自 agent_rate table 和填充率数据 table
- 设置唯一字段,即汇率数据中的 IDtable
- select 并从 exchange_rate table 填充到临时数据 table
- 将记录从临时数据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 提供的列表中的第一个非空值。