我有一张如下表:
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中插入数据
答案 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中插入数据
我不知道你想用这部分说什么。