【问题标题】:Syntax error when trying to insert multiple rows in SQL?尝试在 SQL 中插入多行时出现语法错误?
【发布时间】:2019-08-09 05:52:37
【问题描述】:

我试图在一个命令中将多个值存储到一个包含两列的表中。这是我的命令,

INSERT INTO CATEGORY
VALUES('BUS','BUSINESS'), ('CHN', 'CHILDREN'), ('COK', 'COOKING'), ('COM', 
'COMPUTER'), ('FAL', 'FAMILY LIFE'), ('FIT', 'FITNESS'), ('SEH', 'SELF HELP'), 
('LIT', 'LITERATURE');

在我的第一对带有逗号的值之后,我得到一个红色下划线。我做错了什么?

【问题讨论】:

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

我将从列出列开始:

INSERT INTO CATEGORY (<colname1>, <colname2)
    VALUES ('BUS','BUSINESS'), ('CHN', 'CHILDREN'), ('COK', 'COOKING'), 
           ('COM', 'COMPUTER'), ('FAL', 'FAMILY LIFE'), ('FIT', 'FITNESS'), 
           ('SEH', 'SELF HELP'), ('LIT', 'LITERATURE');

并非所有数据库都支持多行的VALUES。所以这可能是你的问题的原因。

如果您使用不支持此功能的 Oracle,您可以使用 UNION ALL

INSERT INTO CATEGORY (<colname1>, <colname2)
    SELECT 'BUS', 'BUSINESS' FROM DUAL UNION ALL
    SELECT 'CHN', 'CHILDREN' FROM DUAL UNION ALL
    . . .
    SELECT 'LIT', 'LITERATURE' FROM DUAL;

【讨论】:

    【解决方案2】:

    如果您的表中存在更多列,请明确放置您的列名

    INSERT INTO CATEGORY(col1,col2)
    VALUES('BUS,BUSINESS'),
    ('CHN', 'CHILDREN'), 
    ('COK', 'COOKING'),
    ('COM', 'COMPUTER'),
    ('FAL', 'FAMILY LIFE'),
    ('FIT', 'FITNESS'), ('SEH', 'SELF HELP'), 
    ('LIT', 'LITERATURE');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2014-08-10
      相关资源
      最近更新 更多