#sql #sqlite #select #insert
Вопрос:
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
Столбцы таблицы:
field1 field2 timestamp pk
pk
является ли автоматически увеличивающийся первичный ключ
При выполнении этого SQL возникает ошибка
Ошибка БД: 1 «таблица table1 содержит 4 столбца, но было предоставлено 3 значения»
Ответ №1:
Вы должны явно указать, на какие столбцы в 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;
Если вы полностью опустите список выбора, SQLite вернется к ожиданию значений для всех столбцов таблицы в точном порядке, указанном в определении таблицы. В вашем случае, поскольку вы указали значения только для 3 из 4 общих столбцов, вы получаете ошибку. Обратите внимание, что вы также могли бы использовать VALUES
здесь:
INSERT INTO table1 (field1, field2, timestamp)
VALUES
('hello', 15, 1262340000),
('byebye', 10, 1262340000),
('hi', 20, 1262340000),
('boo', 25, 1262340000);
Комментарии:
1. ВСТАВЬТЕ В таблицу 1 (поле 1, поле 2, метка времени) ВЫБЕРИТЕ это нормально ,спасибо!