我正在深入研究大量使用 SQL(使用 Oracle 11g)的遗留代码(C++/Qt)。我附带了这段代码(只是更改了变量名称并将其写入多行以获得更好的可读性):
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 ...
现在看来,这里的“select”与 insert 一起使用来检索并创建一行一行。但是语法似乎很尴尬。我将其更改为:
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 ...
在性能或其他方面有什么区别吗?因为第二行对我来说似乎更自然。