SQL 在 1 个查询中插入具有不同 ID 的相同值

SQL insert same values with different IDs in 1 query

是否可以使用除主键 (ID) 之外的相同数据在 table 中插入多个值?

例如:

INSERT INTO apples (name, color, quantity) 
VALUES of(txtName, txtColor, txtQuantity)

是否可以插入50个不同ID的红苹果?

ID(PK) |Name  | Color | Quantity
1       apple   red      1
2       apple   red      1

这样可以吗?

您可以使用 INSERT ALL 或像这样使用 UNION ALL。

INSERT ALL
   INTO apples  (name, color, quantity) VALUES ('apple', 'red', '1')
   INTO apples  (name, color, quantity) VALUES ('apple', 'red', '1')
   INTO apples  (name, color, quantity) VALUES ('apple', 'red', '1')
SELECT 1 FROM DUAL;

insert into apples (name, color, quantity)
select 'apple', 'red', '1' from dual
union all 
select 'apple', 'red', '1' from dual

在 Oracle 12c 之前,您可以在 ID 列上创建 SEQUENCE。此外,如果您使用的是 Oracle 12c,那么您可以将 ID 列设置为 identity

CREATE TABLE apples(ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY);

此外,如果顺序不重要,您只需要一个 different/unique ID,那么您可以使用

CREATE TABLE apples( ID RAW(16) DEFAULT SYS_GUID() )

创建 Table 4 列

然后添加具有不同主键的同一组行

INSERT INTO apples (ID,name, color, quantity) VALUES (UniqueID,txtName, txtColor, txtQuantity);

您可以使用 SEQUENCE.

`CREATE SEQUENCE seq_name
  START WITH 1
  INCREMENT BY 1`

然后在您的 INSERT 语句中,使用此

`INSERT INTO apples (id, name, color, quantity)
  VALUES(seq_name.nextval, 'apple', 'red', 1 );`
CREATE TABLE APPLES(PK_ID NUMBER PRIMARY KEY,NAME VARCHAR2(100), COLOR VARCHAR2(100), QUANTITY VARCHAR(200));
INSERT INTO APPLES (PK_ID, NAME, COLOR, QUANTITY)  VALUES(1, 'apple', 'red', 1 );
INSERT INTO APPLES (PK_ID, NAME, COLOR, QUANTITY)  VALUES(2, 'apple', 'red', 1 );

您可以在单个 SQL 语句中使用 CONNECT BY 子句,也称为 行生成器方法.

例如,要生成 10 行:

SQL> SELECT LEVEL  ID,
  2        'apple' NAME ,
  3        'red'   color,
  4        1       quantity
  5  FROM dual
  6    CONNECT BY LEVEL <=10;

        ID NAME  COLOR    QUANTITY
---------- ----- ------ ----------
         1 apple red             1
         2 apple red             1
         3 apple red             1
         4 apple red             1
         5 apple red             1
         6 apple red             1
         7 apple red             1
         8 apple red             1
         9 apple red             1
        10 apple red             1

10 rows selected.

SQL>

您可以将上面的 SELECT 用作 INSERT INTO SELECT 语句。