2010-11-11 37 views
5

Có thể chèn nhiều hàng trong một bảng với một câu lệnh chèn không? Tôi biết điều này sẽ xảy ra nếu tôi làm:chèn nhiều hàng bằng một lệnh chèn

insert into table (fields) select values from another_table 

Nhưng nếu tôi muốn chèn:

row 1 - (a1, b1, c1) 
row 2 - (a2, b2, c2) 
... 
row n - (an, bn, cn) 

chỉ với một lệnh chèn?

Trả lời

7

Hai giải pháp (nguồn: http://appsfr.free.fr/spip.php?article21):

INSERT ALL 
INTO table (column1, column2) 
VALUES (value1, value2) 
INTO table (column1, column2) 
VALUES (value1, value2) 
...etc... 
SELECT * FROM DUAL ; 

hoặc

INSERT INTO table (column1, column2) 
SELECT value1, value2 FROM DUAL UNION ALL 
SELECT value1, value2 FROM DUAL UNION ALL 
...etc... 
SELECT value1, value2 FROM DUAL ; 
-5

Không, điều này là không thể. Như bạn đã tự tuyên bố, chỉ có thể có một mệnh đề lựa chọn cung cấp các giá trị chèn và các hàng.

+0

Đó chắc chắn là có thể. – rwilliams

+0

ít nhất là sau khi đọc câu trả lời được chấp nhận cùng với một số khác được đưa ra, bạn chắc chắn biết bây giờ rằng nó là có thể. –

5

Insert All

INSERT ALL 
    INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') 
    INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') 
    INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') 
SELECT * FROM dual; 
4
INSERT INTO products (product_no, name, price) VALUES 
    (1, 'Cheese', 9.99), 
    (2, 'Bread', 1.99), 
    (3, 'Milk', 2.99); 
+0

Câu hỏi đặt ra cho oracle vậy tại sao bạn lại đăng câu trả lời bằng PostgreSQL? – Taryn

+0

Tôi đã xóa 'PostgreSQL' trong câu trả lời của mình. Đối với thông tin của bạn, đây là tiêu chuẩn SQL-92. –

+0

Điều này sẽ không hoạt động trong Oracle theo yêu cầu của OP. –

Các vấn đề liên quan