SQLITE使用Select as Value插入多行

use*_*995 4 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
)
Run Code Online (Sandbox Code Playgroud)

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

Lar*_*tig 5

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

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

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