#sql #postgresql #plpgsql
Вопрос:
create table data(a1 float, a2 float);
insert into data values(1::float, 1::float);
do $
declare
counter integer := 0;
begin
while counter < 50 loop
--SAVE THIS INTO DATA
SELECT a1-0.1*random(),
a2-0.1*random()
from data group by a1, a;
--SAVE THIS INTO DATA (END)
counter := counter 1;
end loop;
end$;
Я хотел бы сохранить значения a1
и a2
в первом кортеже данных. (В основном текущий подсчет)
Как я могу сохранить результат a SELECT
в существующей таблице?
Ответ №1:
Это было бы проще с a PRIMARY KEY
на столе:
create table data(id int primary key, a1 float, a2 float);
insert into data values(1, 1, 1);
select * from data;
id | a1 | a2
---- ---- ----
1 | 1 | 1
update data set a1 = a1 - 0.1*random(), a2 = a2 - 0.1*random() where id =1;
select * from data;
id | a1 | a2
---- -------------------- ------------------
1 | 0.9039355377682678 | 0.98859843416964
Затем включите UPDATE
его в контур счетчика:
do $
declare
counter integer := 0;
begin
while counter < 50 loop
--SAVE THIS INTO DATA
update data set a1 = a1 - 0.1*random(), a2 = a2 - 0.1*random() where id =1;
--SAVE THIS INTO DATA (END)
counter := counter 1;
end loop;
end$;
select * from data;
id | a1 | a2
---- --------------------- --------------------
1 | -1.3146675853588001 | -1.216530003992667
Комментарии:
1. Спасибо, я все еще немного новичок в SQL, так что это идеальное решение. Спасибо вам за быстрый ответ.