SQL查询从表A获取行,当它的列值不在表B中并计算将存储在表B中的内容时

时间:2015-02-28 19:36:55

标签: mysql sql mariadb

一个叫做

trades

另一个叫做

yields

交易有以下列

common_id (which marks the trades that belong together)
type (buy or sell)
amount

产量有以下列

common_id (which is the one from trades but will only appear once now)
yield

收益率字段计算如下:如果交易是"买"然后减去它的价值,如果交易是"出售"然后添加值。

所以基本上有几个交易属于一起,由common_id字段显示。从这些交易中我想计算收益率 然后对属于一起的下一个交易执行相同的操作,等等。

现在问题就在于此。 "交易" table最初是建立起来的,并且可以变得非常庞大,之后我想建立第二个表" yield"。对于初始构建,这很容易。问题是如何在应用程序中断并且我已经有两个表时执行此操作。

所以我需要"交易"使用尚未包含的common_id"产生"之后我计算产量并将其存储在"产生"。

有人有什么想法吗?

此致

2 个答案:

答案 0 :(得分:0)

您可以在一个insert语句中处理此问题:

INSERT INTO yields
(SELECT   common_id, SUM (CASE type WHEN 'buy' THEN -1 * amount
                                    WHEN 'sell' THEN amount
                                    ELSE 0 -- just a precaution
                          END)
 FROM     trades
 WHERE    common_id NOT IN (SELECT common_id FROM yields)
 GROUP BY common_id)

答案 1 :(得分:0)

我会删除表格产量并再次建立起来。我认为这是最简单的方法,并且运行得更快,然后贯穿所有行