0

我有一个如下表:

business
id  name  address
-----------------
1
2
.
.
.
100

该表包含 100 条记录...

现在我使用循环目标表将业务表记录插入到 business_extra 表中,如下所示:

business_extra 

id  name   address
-------------------





    create or replace function() returns text as
    $$
    begin
    for i in(select * from business)
    loop
    insert into business_extra values(i.id,i.name,i.address);
    end loop;
    end;
    $language plpgsql

这正是我想要的意思

在这个循环中,我取了第一行,然后它将该行插入到 business_extra 表中……直到第 100 行完成,然后才插入。

但我不希望如果我获取第一条记录,那么它将在 business_extra 中插入数据

4

1 回答 1

1

使用循环

这里完全没有必要使用 PL/PgSQL 函数和循环。这也是非常低效的。使用纯 SQL 执行此操作:

INSERT INTO business_data (id, name, address)
SELECT i.id, i.name, i.address
FROM business i
ORDER BY i.id
LIMIT 100;

举个例子。我猜测您所说的“直到 100”是什么意思,并猜测您希望前 100 个企业按id.

您的原始功能可能是错误的,因为它可以以某种随机顺序处理任何100 个企业。SELECT结果没有顺序,除非您特别指定一个。

但我不希望如果我获取第一条记录,那么它将在 business_extra 中插入数据

我不知道你想对这部分说什么。

于 2013-11-10T03:17:37.910 回答