0

我已经开始工作了;

    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 insertinto 是如何在没有 SQL 关键字 VALUES 的情况下工作的。此页面http://www.w3schools.com/sql/sql_insert.asp教导需要VALUES部分!

4

2 回答 2

2

您可以将字符串(或任何其他类型)常量放入选择中,例如 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
于 2012-06-14T16:18:08.097 回答
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 ...
于 2012-06-14T16:39:57.767 回答