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

How to fetch a list of rows and foreach in it in sql?

我在 sql 数据库中有一个名为 Click 的 table。这个 table 存储所有的点击。此 table 有一个名为 EntityTypeId 的字段,表示此行用于哪个实体。我想获取一种特殊类型的点击并将它们存储在另一个 table 中。所以我应该从 Click table select 它们插入到 PriceClick table.

这是 Click table 条记录:

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

这是 Click table 和 PriceClick table 所需的行:

Price:

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

PriceClick:

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

如何操作?

如果您没有 DestinationTable,请使用 SELECT INTO;如果您已经创建了 DestinationTable,请使用 INSERT INTO 作为提到的另一个答案 (@wewesthemenace)

SELECT *
INTO DestinationTable
FROM SourceTable
WHERE ....

使用INSERT INTO:

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

如果您正在寻找从一个 table 到另一个的批量插入并且您有类似的 table 结构,则不需要使用任何 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

请注意 你应该在 main table

中有相同的数据类型定义