SQLITE使用Select as Value插入多行

时间:2013-12-19 20:18:00

标签: sqlite insert rows

我有一个只插入一行的sqlite语句。

INSERT INTO queue (TransKey, CreateDateTime, Transmitted) 
VALUES (
  (SELECT Id from trans WHERE Id != (SELECT TransKey from queue)),
   '2013-12-19T19:47:33',
   0
)

如何在一个语句中插入Id from trans!=(从队列中选择TransKey)的每一行?

1 个答案:

答案 0 :(得分:5)

INSERT INTO queue (TransKey, CreateDateTime, Transmitted) 
  SELECT Id, '2013-12-19T19:47:33',  0 
  FROM trans WHERE Id != (SELECT TransKey from queue)

INSERT有两种不同的“味道”。您正在使用的那个(VALUES)会在INSERT语句中插入您“创建”的一行或多行。另一种风格(SELECT)插入从数据库中的一个或多个其他表中检索的可变数量的行。

虽然它不是很明显,但SELECT版本允许您包含表达式和简单常量 - 只要列数与您插入的列数对齐,该语句就可以工作(在其他数据库中,值的类型也必须与列类型匹配。)