在SQL中添加多行

在SQL中添加多行,sql,sqlite,insert,Sql,Sqlite,Insert,我被要求在一个表中添加8行 insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '101', '5', null), ('207', '102', '5', null), ('207', '103', '5', null), ('207', '104', '5', null), ('207', '105', '5', null), ('207', '106', '5', null),

我被要求在一个表中添加8行

insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '101', '5', null), ('207', '102', '5', null),
       ('207', '103', '5', null), ('207', '104', '5', null),
       ('207', '105', '5', null), ('207', '106', '5', null),
       ('207', '107', '5', null), ('207', '108', '5', null)
此操作在添加一个值时效果良好,但添加多个值时会出现错误

查询无法执行:靠近“,”:语法错误


缺少什么?

我假设您的RDBMS不支持这种构造

insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '101', '5', null);
insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '102', '5', null);
.....

我假设您的RDBMS不支持这种构造

insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '101', '5', null);
insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '102', '5', null);
.....
我建议:

insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '101', '5', null);
insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '102', '5', null);
...
insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '108', '5', null);
我建议:

insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '101', '5', null);
insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '102', '5', null);
...
insert into Rating ( rID, mID, stars, ratingDate ) values ('207', '108', '5', null);

我用SQLLite创建了表。表创建脚本如下所示

 create table Rating (rID varchar(10),mID varchar(10),stars varchar(10),ratingDate date);
我使用下面的查询插入到上面的表中,它对我来说工作正常

insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '101', '5', null), ('207', '102', '5', null),
       ('207', '103', '5', null), ('207', '104', '5', null),
       ('207', '105', '5', null), ('207', '106', '5', null),
       ('207', '107', '5', null), ('207', '108', '5', null);

我用SQLLite创建了表。表创建脚本如下所示

 create table Rating (rID varchar(10),mID varchar(10),stars varchar(10),ratingDate date);
我使用下面的查询插入到上面的表中,它对我来说工作正常

insert into Rating ( rID, mID, stars, ratingDate ) 
values ('207', '101', '5', null), ('207', '102', '5', null),
       ('207', '103', '5', null), ('207', '104', '5', null),
       ('207', '105', '5', null), ('207', '106', '5', null),
       ('207', '107', '5', null), ('207', '108', '5', null);

迟到的回答 如果您使用的是SQLITE或更高版本,则可以通过此语法插入多行

最简单的方法

INSERT INTO Rating (rID, mID, stars, ratingDate) VALUES ('207', '102', '5', null) , ('207', '102', '5', null) , ('207', '102', '5', null)
如果使用新的SQLITE版本,上述有问题的条款就行了

选择子句

insert into Rating 
        SELECT '207' AS rID, '101' AS mID, '5' AS stars, null AS ratingDate   
  UNION SELECT '207', '102', '5', null
  UNION SELECT '207', '103', '5', null
  UNION SELECT '207', '104', '5', null
  UNION SELECT '207', '105', '5', null
  UNION SELECT '207', '106', '5', null            
  UNION SELECT '207', '107', '5', null
  UNION SELECT '207', '108', '5', null
或者SQL是

insert into Rating (rID, mID, stars, ratingDate)
        SELECT '207', '101', '5', null 
  UNION SELECT '207', '102', '5', null
  UNION SELECT '207', '103', '5', null
  UNION SELECT '207', '104', '5', null
  UNION SELECT '207', '105', '5', null
  UNION SELECT '207', '106', '5', null            
  UNION SELECT '207', '107', '5', null
  UNION SELECT '207', '108', '5', null

记住如果您不想检查上述插入值集中的重复项,请使用
UNION ALL
代替
UNION
,因为这样会稍微快一点。

延迟回答 如果您使用的是SQLITE或更高版本,则可以通过此语法插入多行

最简单的方法

INSERT INTO Rating (rID, mID, stars, ratingDate) VALUES ('207', '102', '5', null) , ('207', '102', '5', null) , ('207', '102', '5', null)
如果使用新的SQLITE版本,上述有问题的条款就行了

选择子句

insert into Rating 
        SELECT '207' AS rID, '101' AS mID, '5' AS stars, null AS ratingDate   
  UNION SELECT '207', '102', '5', null
  UNION SELECT '207', '103', '5', null
  UNION SELECT '207', '104', '5', null
  UNION SELECT '207', '105', '5', null
  UNION SELECT '207', '106', '5', null            
  UNION SELECT '207', '107', '5', null
  UNION SELECT '207', '108', '5', null
或者SQL是

insert into Rating (rID, mID, stars, ratingDate)
        SELECT '207', '101', '5', null 
  UNION SELECT '207', '102', '5', null
  UNION SELECT '207', '103', '5', null
  UNION SELECT '207', '104', '5', null
  UNION SELECT '207', '105', '5', null
  UNION SELECT '207', '106', '5', null            
  UNION SELECT '207', '107', '5', null
  UNION SELECT '207', '108', '5', null


请记住我您不想检查上述插入值集中是否存在重复项,然后使用
UNION ALL
代替
UNION
,因为这样会稍微快一点。

什么是DB server app?mysql、mssql、postgre、oracle?SQL只是结构化查询语言——许多数据库系统都使用这种语言,但不是数据库产品。。。很多东西都是特定于供应商的-因此我们确实需要知道您使用的是什么数据库系统(以及哪个版本)…这只是一个简单的练习。我认为它使用SQlite.duplicate。请尝试将表名和列名放在“what's DB server app”中?mysql、mssql、postgre、oracle?SQL只是结构化查询语言——许多数据库系统都使用这种语言,但不是数据库产品。。。很多东西都是特定于供应商的-因此我们确实需要知道您使用的是什么数据库系统(以及哪个版本)…这只是一个简单的练习。我认为它使用SQlite.duplicate。尝试将表名和列名放在``不,这也不起作用。它说您可以一次执行一条语句。不,这也不起作用。它说你可以一次执行一条语句。让我给你更多的细节。这些是我的表格:我被要求“为数据库中的所有电影插入詹姆斯·卡梅隆的五星评级。保留评论日期为空。”希望这能帮上忙:)@JohnRock-我试图打开那个url,但收到了消息“您必须登录才能查看所选内容。“@JohnRock-如果你允许远程访问,我想我可以解决这个问题this@JohnRock-转到以下url,你可以看到我所做的屏幕截图,如果你创建了表,它可以工作,但它已经存在。因此它不起作用。我的理解是,我必须编写一个查询,插入这些值,而不是逐个插入。让我给你更多的细节。这些是我拥有的表:我被要求“在数据库中插入詹姆斯·卡梅隆对所有电影的五星评级。保留审核日期为空。“希望有帮助:)@JohnRock-我试图打开该url,但收到消息“您必须登录才能查看您选择的内容。”。“@JohnRock-如果你允许远程访问,我想我可以解决这个问题this@JohnRock-转到下面的url,你可以看到我所做的屏幕截图,如果你创建了表,它可以工作,但它已经存在。因此它不工作。我的理解是,我必须编写一个插入这些值的查询,而不是逐个插入这些值。