c# - MySQL SELECT UNION 在单列上不同

标签 c# mysql sql database visual-studio-2012

我的系统中有两个用于存储汇率的表。第一个 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 的所有缺失值。我想在单个列上使用带有不同的联合语句,但我失败了。我当前的解决方案如下(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 返回所提供列表中的第一个非空值。

关于c# - MySQL SELECT UNION 在单列上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28671145/

相关文章:

c# - SteamAPI_Init() 失败。有关详细信息,请参阅 Valve 的文档或此行上方的注释。 | Steamworks.NET

c# - ASP.NET 的编码性能增强

mysql - 何时使用左外连接?

c# - 使用 Visual Studio 和 NUnit 连接到 localdb

c# - 声明一个类引用列表

c# - 为 VB6 编译 C#.net dll

php - 在一列上选择 DISTINCT,在 mysql 中有多个列

php - mysql 中的 if 语句?

mysql - 在 MySQL 中,如何在不将它们添加为列的情况下同时高效地查询两个或多个属性?

sql - 如何从oracle中删除列的默认值?