【问题标题】:Insert multiple rows in SQLite在 SQLite 中插入多行
【发布时间】:2013-04-17 08:47:54
【问题描述】:

我试图在 SQLite(最新版本)表中插入多行但抛出错误

HERE 得到这个想法,这是我的 sql 查询:

INSERT INTO "Track"
SELECT "Leonard Collections" AS "Album",
       "Instrumental" AS "Artist",
       "00:02:59.3800000" AS "Duration",
       "1/1/0001 12:00:00 AM" AS "ReleasedDate",
       "If You Love Me" AS "Title",
       "False" AS "IsPlayableOnLocal"
UNION
SELECT "Leonard Collections",
       "Instrumental",
       "00:02:56.6930000",
       "1/1/0001 12:00:00 AM",
       "Espoir",
       "False",
UNION
SELECT "Leonard Collections",
       "Instrumental",
       "00:03:51.6770000",
       "1/1/0001 12:00:00 AM",
       "Don't Cry For My Argentina",
       "False"

但它会抛出

SQL logic error or missing database

near "UNION": syntax error

这是我的表结构

CREATE TABLE Track 
(
    ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 
    Album VARCHAR(100) NULL , 
    Artist VARCHAR(255) NOT NULL DEFAULT "Artist Unknown", 
    Duration VARCHAR(255) NOT NULL , 
    LocalPath VARCHAR(255) NULL , 
    ReleasedDate DATE NOT NULL , 
    Title VARCHAR(255) NULL , 
    IsPlayableOnLocal INTEGER NOT NULL , 
    Rating VARCHAR(255) NULL
)

我的查询有问题吗?

任何帮助将不胜感激。

TIA

【问题讨论】:

标签: sql sqlite


【解决方案1】:

既然你提到了最新版本的 SQLite,你应该使用多值插入(SQLite 从 3.7.11 版本开始支持),像这样:

INSERT INTO mytable (col1, col2, col3) VALUES
    (1, 2, "abc"),
    (2, 4, "xyz"),
    (3, 5, "aaa"),
    (4, 7, "bbb");

这更短,更快,更不容易出错。其他一些数据库(至少 MySQL 和 PostgreSQL)也支持这种语法。

【讨论】:

  • SQLite 版本是否依赖设备?
  • 是和不是。 SQLite 是一个库。如果您使用的是(较旧的)共享 SQLite 库,那么它将取决于它。但是,您可以使用与较新版本的静态链接来避免设备依赖
【解决方案2】:

在您的第二个联合声明中,“False”后面有多余的 ',' 字符。这很可能是问题所在。

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2020-02-24
    • 2020-03-30
    相关资源
    最近更新 更多