SQLite:基于共享指标添加整数表

问题描述 投票:0回答:1

我正在将来自不同sqlite数据库的数字汇总到一个输出数据库表中。

我需要基于三个指示列i1,i2,i3告诉输出要更新的行,在输出表中添加整数列a,b,c

ATTACH DATABASE "out.db" AS output;
INSERT INTO output.rows(a,b,c,i1,i2,i3)
SELECT DISTINCT "some_value", b, c, 0, 0, 0 FROM main.rows
ON CONFLICT IGNORE;

#THE FOLLOWING LINES MIGHT SHOW WHAT I MEAN...
UPDATE output.rows SET i1=i1+i1_,i2=i2+i2_, i3=i3+i3_
WHERE a="some_value" AND b=b_ and c=c_
SELECT i1_, i2_, i3_, b_, c_ FROM main.rows;

我不想输入a,b,c的所有组合。如您所见,a不是来自main,而是来自外部信息(文件名)。

sqlite join add insert-update
1个回答
0
投票

在支持UPSERT的SQLite的较新版本中,以下内容似乎起作用:

ATTACH DATABASE "$out.db" AS output;

INSERT INTO output.rows(a,b,c,i1,i2,i3)
SELECT "some_value", b, c, i1, i2, i3 FROM main.rows WHERE true
ON CONFLICT (a,b,c) DO UPDATE SET i1=i1+i1, i2=i2+i2, i3=i3+i3;

[在我的情况下,来自i1,i2,i3main列实际上具有与I1,I2,I3中的对应列不同的名称(例如output),因此UPDATE更清晰(i1=i1+I1)。我无法在main.rows.i1语句中引用为UPDATE。如果您知道如何解决这种歧义,请发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.