[英]MySQL SELECT UNION Distinct on single column
我有两个用于在系统中存储汇率的表。 第一个agent_rate如下。
ID Currency Rate
=======================
3 GBP 0.65
4 EUR 0.70
5 JPY 57.4
第二个表exchange_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
我想选择第一个表agent_rate中的所有行,然后从exchange_rate表中添加ID的所有缺失值。 我想在一个单独的列上使用union语句,但是我失败了。 我目前的解决方案如下(Visual Studio)
结果表应为:
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中做到这一点?
您可以加入表并首先选择代理值(如果存在),否则从交换表中获取价值
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
返回提供的列表中的第一个非空值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.