在MySQL中,你可以像这样插入多行:
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');
然而,当我尝试这样做时,我得到了一个错误。是否可以在SQLite数据库中一次插入多行?这样做的语法是什么?
在MySQL中,你可以像这样插入多行:
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2'),
('data1', 'data2');
然而,当我尝试这样做时,我得到了一个错误。是否可以在SQLite数据库中一次插入多行?这样做的语法是什么?
当前回答
在sqlite 3.7.2上:
INSERT INTO table_name (column1, column2)
SELECT 'value1', 'value1'
UNION SELECT 'value2', 'value2'
UNION SELECT 'value3', 'value3'
等等
其他回答
从版本2012-03-20(3.7.11)开始,sqlite支持以下INSERT语法:
INSERT INTO 'tablename' ('column1', 'column2') VALUES
('data1', 'data2'),
('data3', 'data4'),
('data5', 'data6'),
('data7', 'data8');
阅读文档:http://www.sqlite.org/lang_insert.html
PS:请给Brian Campbell的回复+1。不是我的!他首先提出了解决方案。
根据本页,不支持:
2007-12-03:不支持多行插入,也就是复合插入。
INSERT INTO table (col1, col2) VALUES
('row1col1', 'row1col2'), ('row2col1', 'row2col2'), ...
实际上,根据SQL92标准,VALUES表达式应该能够独立存在。例如,下面应该返回一个三行的单列表:VALUES 'john', 'mary', 'paul';
从3.7.11版本开始,SQLite支持多行插入。Richard Hipp评论道:
新的多值插入词仅仅是该复合词的句法糖(sic) 插入。无论如何,这都没有性能优势。”
在mysql lite中,您不能插入多个值, 但是您可以通过只打开一次连接,然后执行所有插入,然后关闭连接来节省时间。 这样可以节省很多时间
我有一个像下面这样的查询,但与ODBC驱动程序SQLite有一个错误“,”它说。 我运行vbscript在HTA (Html应用程序)。
INSERT INTO evrak_ilac_iliskileri (evrak_id, ilac_id,
baglayan_kullanici_id, tarih) VALUES (4150,762,1,datetime()),
(4150,9770,1,datetime()),(4150,6609,1,datetime()),(4150,3628,1,datetime()),
(4150,9422,1,datetime())
是的,从SQLite 3.7.11开始,SQLite支持这一点。从SQLite文档:
(当这个答案最初写的时候,这是不支持的)
为了兼容旧版本的SQLite,你可以使用andy和fearless_fool所建议的技巧,使用UNION,但对于3.7.11及以后版本,这里描述的更简单的语法应该是首选。