insert TableName(主键字段名,col1,col2,...colN)
select 常数 as 主键字段名,Col1,col2,....comN
from TableName
where ...

解决方案 »

  1.   

    select 常数 as 主键字段名,Col1,col2,....comN
    from TableName
    where ...
    是子查询,
    insert TableName(主键字段名,col1,col2,...colN)
    是插入的表名和字段名,也可以写成:
    insert into TableName(主键字段名,col1,col2,...colN)
      

  2.   

    由于主键不能重复,所以你必须在插入前指定一个数,而不能从原来的表带数。
    建议你多看看基本的SQL语句,下面是关于AS字句指定结果集的列名的帮助,从SQL SERVER帮助拷贝。指定结果集的列名
    AS 子句可用来更改结果集列名或为导出列指定名称。当结果集列由对表或视图中的列的引用进行定义时,结果集列的名称与所引用列的名称相同。AS 子句可用于为结果集列指定不同的名称或别名。这样可增加可读性。例如:SELECT EmpSSN AS "Employee Social Security Number"
    FROM EmpTable在选择列表中,有些列进行了具体指定,而不是简单的对列的引用,这些列便是导出列。除非使用 AS 子句指定了一个名称,否则导出列没有名称。在如下示例中,如果移去 AS 子句,那么使用 DATEDIFF 函数指定的导出列就没有名称:SELECT OrderID,
           DATEDIFF(dd, ShippedDate, GETDATE() ) AS DaysSinceShipped
    FROM Northwind.dbo.Orders
    WHERE ShippedDate IS NOT NULLAS 子句是在 SQL-92 标准中所定义的语法,用来为结果集列指派名称。下面是在 Microsoft® SQL Server™ 中首选的语法:column_name AS column_alias或result_column_expression AS derived_column_nameTransact-SQL 为了兼容早期版本的 SQL Server,还支持下列语法:column_alias = column_name或derived_column_name = result_column_expression例如,上一个示例可用下列代码替换:SELECT OrderID,
           DaysSinceShipped = DATEDIFF(dd, ShippedDate, GETDATE() )
    FROM Northwind.dbo.Orders
    WHERE ShippedDate IS NOT NULL