通过循环插入数据

时间:2013-11-09 07:34:42

标签: postgresql

我有一张如下表:

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中 table ...第100行完成,然后才会插入。

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

1 个答案:

答案 0 :(得分: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中插入数据

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