我是SqlLite中的菜鸟,我有以下情况,我有三个表:Table1
,Table2
和Table3
Table1 has ID (primary key auto increment) INTEGER, title TEXT
Table2 has ID (primary key auto increment) INTEGER, Table1_ID INTEGER
Table3 has ID (primary key auto increment) INTEGER, Table2_ID INTEGER
使用变量在表中存储最新添加的id的唯一方法是创建临时表
CREATE TEMP TABLE IF NOT EXISTS _Variables(Table1ID INTEGER, Table2ID INTEGER, Table3ID INTEGER);
在Table1
INSERT INTO Table1 ( ... ) VALUES ( ... )
INSERT INTO _Variables(Table1ID, Table2ID, Table3ID) VALUES (last_insert_rowid(), -1, -1);
在Table2
INSERT INTO Table2 ( ... ) VALUES ( ... );
UPDATE _Variables SET Table2ID = last_insert_rowid();
现在我想将Table1和Table2中的最新ID转换为Table3
INSERT INTO Table3 (...) VALUES ( @idTbl1, @idTbl2);
我不知道这有什么好办法吗?
答案 0 :(得分:0)
您可以使用子查询查找每个值:
INSERT INTO Table3 VALUES((SELECT Table1ID FROM _Variables),
(SELECT Table2ID FROM _Variables));
但是如果所有这些值都在同一个表的同一行中,则可以使用单个查询:
INSERT INTO Table3
SELECT Table1ID, Table2ID
FROM _Variables;