一个简短的问题:更好的方法是什么?为什么?
用一个
INSERT INTO someTable(fieldA, fieldB, fieldC)
SELECT 'consA', 'consB', other.value FROM other WHERE XXX
Run Code Online (Sandbox Code Playgroud)
或使用B:
INSERT INTO someTable(fieldA, fieldB, fieldC)
VALUES ('constA', 'constB', (SELECT other.value FROM other WHERE XXX));
Run Code Online (Sandbox Code Playgroud)
或其他什么......?
(x
可以是匹配单行的任何条件,示例在postgresql中工作)
第一种方法通常更好,因为第二种方法冒着做两件事之一的风险:
NULL
如果子查询未返回任何行,则插入值.当然,这可能是理想的行为.
一般来说,insert . . . select
比较一般insert . . . values()
.我更喜欢前者,因为它在更多情况下(包括values
可以使用的所有情况)更强大,更有用.