假设我在 sqlite3 中有这个表name_currency
。
name, currency, price
AA, SGD, 1
BB, USD, 2
CC, EUR, 3
我需要以这种方式处理价格。
if currency == "SGD", price = price*2
if currency == "USD", price = price*Y
if currency == "EUR", price = price*Z
需要从另一个表currency_multiplier
检索Y、Z的值。这就是currency_multiplier 的样子。
currency, rate
SGDUSD, 3 #value of Y
SGDEUR, 4 #value of Z
处理完价格列后,所需的输出表将如下所示;
name, currency, price
AA, SGD, 2
BB, USD, 6
CC, EUR, 12
这是我为解决此问题而编写的查询。
SELECT name_currency.name,
name_currency.currency,
name_currency.dividend_yield*currency_multiplier.rate as price,
from name_currency
INNER JOIN currency_multiplier
on name_currency.currency = substr(currency_multiplier.currency,4,3)
我编写的查询的输出如下所示;
name, currency, price
BB, USD, 6
CC, EUR, 12
缺少包含货币 SGD
的行。内连接过滤太多。如何修改查询来解决问题?欢迎我提出全新的疑问来解决这个问题。
最佳答案
使用左连接代替内连接
SELECT name_currency.name,
name_currency.currency,
case when currency_multiplier.rate is null then name_currency.dividend_yield*2 else name_currency.dividend_yield*currency_multiplier.rate end as price,
from name_currency
left JOIN currency_multiplier
on name_currency.currency = substr(currency_multiplier.currency,4,3)
关于sql - 如何修改这个sqlite SQL查询以减少内连接过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868401/