SQL(ite)newb here,
我有一个带有两个表的sqlite3数据库,让我们称之为table_a和table_b。 table_a的格式有36亿个成对分数:
mol_a,mol_b,score
int, int, real
int, int, real
...
我在table_a中添加了两个空白列:year_a和year_b,我想用table_b中的数据填充。
表b由mol_id和年份格式
组成mol_id,year
int,int
int,int
...
其中mol_id对应于table_a的mol_a和mol_b字段中的可能ID。
我认为我可以使用insert语句执行此操作,但我无法在where子句中获得多个表语法。任何建议将不胜感激。
这就是我正在尝试的:
INSERT INTO table_a.year_a
SELECT year
FROM table_b
WHERE table_b.mol_id = table_a.mol_a;
但是看起来我的TABLE.COLUMN语法错了吗?
我确信有一个简单的答案,但我似乎无法找到它。
感谢您的帮助
答案 0 :(得分:1)
根据您的描述,您需要update
,而不是insert
:
update table_a
set year = (select b.year from table_b b where b.mol_id = table_a.mol_a);
答案 1 :(得分:0)
您确定不想要更新,即填充现有行的新列吗?在这种情况下:
UPDATE table_a
SET year_a = (SELECT year
FROM table_b
WHERE table_b.mol_id = table_a.mol_a),
year_b = (SELECT year
FROM table_b
WHERE table_b.mol_id = table_a.mol_b),
答案 2 :(得分:0)
尝试1
INSERT INTO tanimoto (year_a)
SELECT year FROM date_ids table_b
WHERE table_b.mol_id = table_a.mol_a;
尝试2
INSERT INTO tanimoto (year_a)
SELECT year FROM date_ids table_b
WHERE Exists (Select 1 From tanimoto table_a Where table_a.mol_id = table_b.mol_a;
在这里,我有点不舒服,我可能不完全明白你想要做什么。我看到很多otehr答案提到你可能 wnat并更新。我正在阅读你要添加一个新行到tanimoto的年份来自date_ids,你可以通过 mol 获得匹配。如果不是这样,那么你可能会看一些更新答案。