在SQL Lite中使用INSERT和变量

时间:2018-04-16 14:47:17

标签: sqlite

我是SqlLite中的菜鸟,我有以下情况,我有三个表:Table1Table2Table3

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);

我不知道这有什么好办法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用子查询查找每个值:

INSERT INTO Table3 VALUES((SELECT Table1ID FROM _Variables),
                          (SELECT Table2ID FROM _Variables));

但是如果所有这些值都在同一个表的同一行中,则可以使用单个查询:

INSERT INTO Table3
SELECT Table1ID, Table2ID
FROM _Variables;