将插入调整为SQL

时间:2012-06-14 16:12:49

标签: sql insert-into

我已经开始工作了;

    INSERT INTO TermsFinal 
            (old_classification, count, new_classification, old_term,new_term) 
        SELECT  old_classification   , Count(seed) AS count , new_classification, old_term, new_term FROM   TermsTemp
            GROUP  BY old_classification
            ORDER  BY count DESC    

在TermsFinal中还有一个名为SOURCE_TABLE的字段,TermsTemp没有。 我也想填充那个领域。我已经获得了$ source_table值。我试过这个但是不行。

    INSERT INTO TermsFinal 
            (SOURCE_TABLE,old_classification, count, new_classification, old_term,new_term) 
    '{$SOURCE_TABLE}',  SELECT  old_classification   , Count(seed) AS count , new_classification, old_term, new_term FROM   TermsTemp_TEMP
            GROUP  BY old_classification
            ORDER  BY count DESC

如何在一次执行insert into语句的同时将该值添加到TermsFinal的SOURCE_TABLE字段中?

和另一个令我费解的事情,我的第一个SQL插入如何在没有SQL关键字VALUES的情况下工作。这个页面http://www.w3schools.com/sql/sql_insert.asp教导我们需要 VALUES 部分!

2 个答案:

答案 0 :(得分:2)

例如,您可以将字符串(或任何其他类型)常量设置为select select 'string' as const_str , field1 from table1将返回2列,第一列将包含所有行的“字符串”文本。在你的情况下,你可以做

 INSERT INTO TermsFinal 
        (SOURCE_TABLE,old_classification, count, new_classification, old_term,new_term) 
  SELECT  '{$SOURCE_TABLE}', old_classification   , Count(seed) AS count , new_classification, old_term, new_term FROM   TermsTemp_TEMP
        GROUP  BY old_classification
        ORDER  BY count DESC

答案 1 :(得分:1)

有几种方法可以将数据插入表格

一次一行。这是您需要values关键字的地方。

Insert into TableA (Col1, Col2,...) values (@Val1, @Val2,...)

如果您有自动标识,则可以使用select @@ identity(至少在ms sql中)获取id 上。当您需要下次插入ID时,这非常有用。

从选择(您正在做的事情)

Insert into tableA (Col1, Col2)
Select Val1, Val2 from TableB

或从两个单独的表中插入硬编码值和值

Insert into tableA (Col1, Col2, Col3, Col4)
Select 'hard coded value', b.Val1, b.Val2, c.Val1 
from TableB b join Table c on b.TableCID=c.ID

现在您可以一次插入多行。

选择

此方法最终会从查询中创建一个新表,非常适合快速备份表或表的一部分。

select * into TermsFinal_backup from TermsFinal where ...