【发布时间】:2017-12-14 21:33:35
【问题描述】:
我有两个具有以下架构的表,
- table1 (a int, b int, c int, d int 默认123)
- table2 (a int, b int, c int, e int)
我想将table2 的(a,b,c) 列更新为table1,但保留d 的默认值。
比如下面的记录
------------------------
table1 | a | b | c | d |
------------------------
| 1 | 2 | 3 | 4 |
------------------------
和
------------------------
table2 | a | b | c | e |
------------------------
| 5 | 6 | 7 | 8 |
------------------------
我想要一个输出:
--------------------------
table1 | a | b | c | d |
--------------------------
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 123 |
--------------------------
这是我尝试过的:
INSERT INTO table1(a, b, c, d)
VALUES ((SELECT a, b, c FROM table2), DEFAULT)
此查询的语法无效,因为它返回子查询中的表并将其用作值。
我也试图避免下面的这种解决方案,因为它隐藏了使用默认值d 的事实。我真的很想明确地将其设为默认以使其清楚。
INSERT INTO table1(a, b, c)
SELECT a, b, c
FROM table2
有没有办法结合
INSERT .. VALUES(..)
与
INSERT.. SELECT.. FROM table
或者只是实现相同目标的另一种方式?
【问题讨论】:
-
INSERT INTO table1(a, b, c) SELECT a, b, c FROM table2有什么问题? -
看看this问题。
标签: sql-server tsql