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
语句。
是否可以使用除主键 (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
语句。