我已经开始工作了;
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 部分!
答案 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 ...