【问题标题】:inserting the data through the loop通过循环插入数据
【发布时间】:2013-11-09 07:34:41
【问题描述】:

我有一张如下表:

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 中插入数据

【问题讨论】:

  • 很难理解你在这里试图做什么。

标签: postgresql


【解决方案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 个”是什么意思,并且猜想您想要按 id 排序的前 100 个企业。

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

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

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

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2020-07-22
    • 2018-10-16
    • 2020-11-11
    • 2017-02-16
    • 2018-06-29
    相关资源
    最近更新 更多