尝试在SQL中插入多行时出现语法错误?

时间:2019-03-18 19:12:45

标签: sql oracle oracle-sqldeveloper

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

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

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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