Kon*_*rin 13 sql t-sql sql-server select insert
SQL Server问题.做的时候
INSERT INTO T1 SELECT (C1, C2) FROM T2
Run Code Online (Sandbox Code Playgroud)
我不想指定列名,T1因为它们与in中的相同T2
有可能这样做吗?
目前我收到了错误
Msg 213,Level 16,State 1,Line 1
列名或提供的值数与表定义不匹配.
Rem*_*anu 20
始终在INSERT和SELECT投影中都使用显式列.即使你不想,你应该:
INSERT INTO T1 (C1, c2)
SELECT C1, C2 FROM T2
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 14
是的,您可以省略插入的表的字段名称,并且可以使用select*来获取表中的所有字段,但我不建议使用此方法.
如果省略字段名称,则字段按位置匹配,而不是按名称匹配.如果字段的顺序不完全相同,则会混淆.通常,您应该避免依赖表的确切布局,以最大程度地降低表中更改破坏查询的风险.
如果T1和T2完全匹配,你有两个选择。您可以select从所有列T2的insert into T1,或者你可以提供一个列清单的insert声明。
即使当您执行selectMSSQL 提供的列标题时,insert语句也不会使用该信息来匹配列。