我有一个只插入一行的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)的每一行?
答案 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
版本允许您包含表达式和简单常量 - 只要列数与您插入的列数对齐,该语句就可以工作(在其他数据库中,值的类型也必须与列类型匹配。)