2011-03-22 72 views
9

这可能是一个非常基本的SQL问题,但我已经看到了SQL INSERT语句,而不用从句INTO,我想知道,如果这是在SQL Server 2000或2008的一些特殊情况。SQL服务器插入没有INTO

INSERT语句看起来像

INSERT <table_name> 
(
    column names 
) 
select * 
from <another table> 
where <condition> 

对不起,如果这是超级简单,但我只是想确认一下。 谢谢!

回答

15

INTO是optional。它在ANSI sql中是必需的,但MS/Sybase开发人员决定使其成为可选项。

+0

谢谢。我只是用INTO子句和INTO子句运行插入语句,结果是一样的。 – Abe 2011-03-22 23:26:51

5

检查BNF语法http://savage.net.au/SQL/

92,99,SQL:2003

<insert statement> ::= INSERT INTO <insertion target> <insert columns and source> 

按照ANSI规范,INTO只应在MERGE条款可选。

对于SQL Server(此链接从2000年开始显示它的年龄 - 它存在于第一版SQL Server中),它是可选。对于MySQL也是可选的。

INSERT [ INTO] 
    { table_name WITH (<table_hint_limited> [ ...n ]) 
     | view_name 
     | rowset_function_limited 
    } 

    { [ (column_list) ] 
     { VALUES 
      ({ DEFAULT | NULL | expression } [ ,...n]) 
      | derived_table 
      | execute_statement 
     } 
    } 
    | DEFAULT VALUES 
0

您提到它来自早期版本的SQL。如果您现在正在运行2005年,则可以删除INTO。