从另一个表创建表。(Sql Server)

时间:2015-08-18 13:00:53

标签: sql sql-server

我想创建一个与现有表相同的新表以及一些其他列。在简单的情况下,我们将做:

 Select * INTO table2 from table1 where 1=0

但我也想添加一些新列。我们可以一步完成,即不使用ALTER TABLE作为下一步吗?

5 个答案:

答案 0 :(得分:3)

是的,但是为了指定数据类型,您应该将null转换为所需的类型。

bindToController: true,

列约束/默认值需要通过UPDATE TABLE语句单独添加,但它们可能不是您要执行的操作所必需的。

列类型当然是。

答案 1 :(得分:1)

您能否在SELECT声明中明确列出新列?他们需要填充还是只有空场?像

这样的东西
Select *, cast(NULL as type) as NewColumn1, cast(NULL as type) as NewColumn2... INTO table2 from table1 where 1=0

虽然您可能必须列出原始表中的所有单个列,而不是*

答案 2 :(得分:0)

你可以在下面这样做:

@RequestMapping(value = Connectors.CONNECTOR_HEARTBEAT, method = RequestMethod.POST)
public void doSomething(@RequestBody List<Message> messages, HttpServletResponse response) {
    int code = (messages!=null && !messages.isEmpty()) ? HttpServletResponse.SC_OK
            : HttpServletResponse.SC_NOT_FOUND;
    if (code != HttpServletResponse.SC_OK) {
        response.sendError(code, res);
        return;
    }
    java.io.PrintWriter wr = response.getWriter();
    response.setStatus(code);
    wr.print(res);
    wr.flush();
    wr.close();

    // Now it it time to do the long processing
    ...
}

答案 3 :(得分:0)

是的,你可以这样做

选择*,&#39; abc&#39;从dbo.oldtable到dbo.newtable的城市,其中1 = 0

答案 4 :(得分:0)

如果您想添加更多columns,请在select声明中添加: 例如:

select 
  t.*, 
  12 as ID, 
  'ABCD' as Name 
INTO table2 
from table1 as t 
where 1 = 0

creation执行execute sp_columns 'table2'之后,按预期查看表格的定义 此处Name列的长度为varchar的{​​{1}}类型。