将MySQL表连接到自身+操作[已关闭]

sxpgvts3  于 2023-05-28  发布在  Mysql
关注(0)|答案(1)|浏览(110)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

2天前关闭。
Improve this question
我收到一些外汇货币对的免费更新。我试图通过从有分母和分母的对中扣除来计算其他对。
我的MyQSL表(名为param_forex):

我的MySQL查询

UPDATE `param_forex` as pf
    JOIN `param_forex` as pf1 on pf1.numerator = pf.Ticker
    JOIN `param_forex` as pf2 on pf2.denominator = pf.Ticker
    SET pf.Rate = (SELECT pf1.`Rate` WHERE pf1.`Ticker`= pf1.numerator / SELECT pf2.`Rate` WHERE pf2.`Ticker`= pf2.denominator)
    WHERE pf.Source='Calc'

结果:0行受影响。(查询花费了0.0007秒。)对于源代码为'calc'的每一行,预期的输出是通过获取在代码列中匹配的适当值来计算分子除以分母,并将结果放在rate列中
我不明白为什么它不起作用,我已经花了几个小时。(对于那些以前回答过我几个问题的人,我希望你注意到我的问题越来越好了...)

cbjzeqam

cbjzeqam1#

您不需要子查询,只需在SET子句中直接使用pf1.Ratepf2.Rate
您还可以反向设置ON条件,因为numeratordenominator仅在具有Source = Calc的行中设置。

UPDATE `param_forex` as pf
JOIN `param_forex` as pf1 on pf.numerator = pf1.Ticker
JOIN `param_forex` as pf2 on pf.denominator = pf2.Ticker
SET pf.Rate = pf1.Rate / pf2.Rate
WHERE pf.Source='Calc'

相关问题