我正在深入使用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