如何在sql中获取行列表和foreach?

时间:2015-03-10 05:47:56

标签: sql sql-server sqlcommand

我在sql数据库中有一个名为Click的表。此表存储所有内容的点击。此表有一个名为EntityTypeId的字段,表示此行是针对哪个实体的。我想获取特殊类型的点击并将它们存储在另一个表中。所以我应该从Click表中选择它们并将它们插入到PriceClick表中。

以下是Click表记录:

ClickId  |  EntityTypeId
------------------------
   1             1
   2             2
   3             2
   4             3

以下是Click表和PriceClick表所需的行:

Price

ClickId  |  EntityTypeId
------------------------
   1             1
   4             3

PriceClick

ClickId  |  EntityTypeId
------------------------
   2             2
   3             2

怎么做?

3 个答案:

答案 0 :(得分:1)

如果您没有DestinationTable,请使用SELECT INTO或如果您已经创建了DestinationTable,请使用INSERT INTO作为提及的其他答案(@wewesthemenace)

SELECT *
INTO DestinationTable
FROM SourceTable
WHERE ....

答案 1 :(得分:1)

使用INSERT INTO

INSERT INTO PriceClick(ClickId, EntityTypeId)
SELECT ClickId, EntityTypeId
FROM Click
WHERE EntityTypeId = 2

答案 2 :(得分:1)

如果您正在寻找从一个表到另一个表的批量插入,并且您具有类似的表结构,则不需要使用任何foreach或其他循环。

有一种简单的方法可以实现这一目标 -

CREATE TABLE Click  (ClickId bigint, EntityTypeId bigint)

INSERT INTO Click VALUES (1,1)
INSERT INTO Click VALUES (2,2)
INSERT INTO Click VALUES (3,2)
INSERT INTO Click VALUES (4,3)

CREATE TABLE PriceClick (ClickId bigint, EntityTypeId bigint)

INSERT INTO PriceClick (ClickId,EntityTypeId)
SELECT ClickId,EntityTypeId 
FROM Click WHERE ClickId = 2 

CREATE TABLE Price (ClickId bigint, EntityTypeId bigint)
INSERT INTO Price (ClickId,EntityTypeId)
SELECT ClickId,EntityTypeId 
FROM Click WHERE ClickId <> 2

请注意您应该在主表

中使用相同的数据类型定义