sqlite3 插入联合 SELECT

sqlite3 INSERT INTO UNION SELECT

INSERT INTO table1
    SELECT "hello" AS field1, 15 AS field2, 1262340000 AS timestamp 
    UNION 
    SELECT "byebye", 10, 1262340000 
    UNION 
    SELECT "hi", 20, 1262340000 
    UNION 
    SELECT "boo", 25, 1262340000 

Table 列:

field1  field2  timestamp   pk

pk是自增主键

执行此操作时发生错误SQL

DB Error: 1 "table table1 has 4 columns but 3 values were supplied"

您应该明确指定 table1 您的插入目标列:

INSERT INTO table1 (field1, field2, timestamp)
SELECT 'hello', 15, 1262340000
UNION ALL
SELECT 'byebye', 10, 1262340000
UNION ALL
SELECT 'hi', 20, 1262340000
UNION ALL
SELECT 'boo', 25, 1262340000;

当您完全省略 select 列表时,SQLite 将回退到 table 中 所有 列的预期值,以指定的确切顺序根据 table 定义。在您的情况下,由于您只提供了 4 列中的 3 列的值,因此您会收到错误消息。请注意,您也可以在此处使用 VALUES

INSERT INTO table1 (field1, field2, timestamp)
VALUES
    ('hello',  15, 1262340000),
    ('byebye', 10, 1262340000),
    ('hi',     20, 1262340000),
    ('boo',    25, 1262340000);