Cоставлениe sql-запроса на postgre. INTO указано неоднократно?
Суть в том что, есть 3 колонки в таблице PRECISION. В зависимости от значения (0 или 1) отбираются значения из 1 или же из 2 колонки. Начинающий, сделал вот таким вот образом.
select "PRECISION".value,"PRECISION".flag,"PRECISION".id into precision, idprecision
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 0
union
select "PRECISION".value1,"PRECISION".flag,"PRECISION".id into precision, idprecision
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 1;
Сделал, но выдается ошибка "INTO указано неоднократно". Наверно надо изменить запрос или есть возможность исправить этот?
select value, flag, id into temp_table
from
(select "PRECISION".value,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 0
union
select "PRECISION".value1,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 1) x;
А временную таблицу как надо объявить? CREATE GLOBAL TEMPORARY TABLE temp_table выдает ошибку. Без объявления соответственно говорит неизвестная переменная
create temp table temp_table(value varchar, flag smalint, id bigint);
но если таблица не объявлена проще сделать подругому.
create temp table temp_table as
(select "PRECISION".value,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 0
union
select "PRECISION".value1,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 1);
Coltex: если вы не хотите что то менять, то просто подставьте в 1ое выражение ваши параметры, а не temp_table. т.е
select value, flag, id into precision
from
(select "PRECISION".value,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 0
union
select "PRECISION".value1,"PRECISION".flag,"PRECISION".id
from "PRECISION", "TAG_NAME"
where "PRECISION".id = "TAG_NAME".id_precision
and "TAG_NAME".id = id_tag
and "PRECISION".flag = 1) x;
Вам стоит ознакомиться со статьей тык потому, что очень кажеться что вы не понимаете как работает селект инто.
insert into table as select аналогичен select into.