繁体   English   中英

MySQL SELECT UNION在单列上有所不同

[英]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)

  1. agent_rate表和填充率数据表中选择
  2. 在费率数据表中设置唯一字段即ID
  3. exchange_rate表中选择并填充到临时数据表中
  4. 将记录从临时数据表移至速率数据表并忽略错误

结果表应为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM