我正在深入使用SQL(使用Oracle 11g)的遺留代碼(C++/Qt)。我來到這片代碼(只是多行更改的變量名和寫一個更好的可讀性):兩個不同的INSERT INTO語句做同樣的事情
insert into FOO_TABLE (BEGIN, FIRST_VALUE, SECOND_VALUE, VALUE, BAR) select
999,
D.FIRST,
(select O.SECOND from TABLE_TWO O where O.ID=555),
333,
444
from TABLE_ONE D where D.ID=666
這在INSERT INTO ... SELECT ...
形式現在看來這裏「選擇」與插入一起使用來檢索並創建一行單行。但是,語法看起來很尷尬。我將它改爲:
insert into FOO_TABLE (BEGIN, FIRST_VALUE, SECOND_VALUE, VALUE, BAR) values (
999,
(select D.FIRST from TABLE_ONE D where D.ID=666),
(select O.SECOND from TABLE_TWO O where O.ID=555),
333,
444)
而且這個工作沒有任何問題。這是在形式INSERT INTO ... VALUES ...
在表現或任何其他方面是否有任何區別?因爲第二行對我來說似乎更自然。
第一個示例允許您一次插入多於1行,在您的情況下這不會影響,但您可以根據WHERE條件插入多於一行的內容。第二個示例只插入一行。 – 2012-08-16 07:36:57